2016-07-05 18 views
4

我看到了一些與這個主題相關的問題,但我沒有找到實現這個目標的簡單而常用的方法。將projectDir作爲一個字符串或char *在C++中

我的問題是:如何在我的C++代碼中將$(projectDir)或另一個宏指定爲stringchar*

由於

+0

E.g.通過編譯器選項'/ D'將它作爲宏符號傳遞(可能只需要在項目設置中使用宏定義)。在C++代碼中,你可以使用它。 –

回答

3

如果你的編譯器支持raw strings那麼你可以(從Visual Studio 2013的屏幕截圖)添加MYMACRO=R"($(ProjectDir))";到預處理器定義: enter image description here

然後,您可以添加以下代碼:

#pragma message("MYMACRO == " MYMACRO) // will print project dir during compilation 


std::cout << MYMACRO << std::endl; //will print project dir at run time 
+1

這看起來像VS 2010,我認爲它不支持原始字符串。我錯了,還是你用屏幕截圖僞裝了我們? –

+1

問題中沒有提到VS的版本,這就是爲什麼我寫**「如果你的編譯器支持原始字符串」**不,我沒有在這裏僞造任何人。我現在會給答案添加評論。 BTW截圖在VS2010中幾乎是一樣的,只是字符串不會工作,因爲路徑中的反斜槓 – mvidelgauz

+1

我明白這一點。你是如何獲得VS 2013看起來像VS 2010的?你是如何禁用現代版本的Visual Studio附帶的可怕自定義主題的? –

2

MYMACRO = R 「($(PROJECTDIR))」;正在爲我工​​作。

我需要這個很長一段時間,這是一個完美的解決方案。 我的測試用例在運行exe時試圖找到相對於bin文件夾的輸入文件路徑,並將輸入文件路徑相對於$(ProjectDir)。因此,我可以讓VS項目感到高興或者exe,但不是兩者兼而有之。

此解決方案完美地工作,使他們都很高興。

感謝@mvidelgauz的寶貴信息。