我看到了一些與這個主題相關的問題,但我沒有找到實現這個目標的簡單而常用的方法。將projectDir作爲一個字符串或char *在C++中
我的問題是:如何在我的C++代碼中將$(projectDir)
或另一個宏指定爲string
或char*
?
由於
我看到了一些與這個主題相關的問題,但我沒有找到實現這個目標的簡單而常用的方法。將projectDir作爲一個字符串或char *在C++中
我的問題是:如何在我的C++代碼中將$(projectDir)
或另一個宏指定爲string
或char*
?
由於
如果你的編譯器支持raw strings那麼你可以(從Visual Studio 2013的屏幕截圖)添加MYMACRO=R"($(ProjectDir))";
到預處理器定義:
然後,您可以添加以下代碼:
#pragma message("MYMACRO == " MYMACRO) // will print project dir during compilation
std::cout << MYMACRO << std::endl; //will print project dir at run time
這看起來像VS 2010,我認爲它不支持原始字符串。我錯了,還是你用屏幕截圖僞裝了我們? –
問題中沒有提到VS的版本,這就是爲什麼我寫**「如果你的編譯器支持原始字符串」**不,我沒有在這裏僞造任何人。我現在會給答案添加評論。 BTW截圖在VS2010中幾乎是一樣的,只是字符串不會工作,因爲路徑中的反斜槓 – mvidelgauz
我明白這一點。你是如何獲得VS 2013看起來像VS 2010的?你是如何禁用現代版本的Visual Studio附帶的可怕自定義主題的? –
的&(PROJECTDIR)串不能直接傳遞給該程序。取而代之的是,你可以在您的可執行文件與GetCurrentDirectory(), 在微軟的網站很好地解釋啓動目錄:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364934(v=vs.85).aspx
你會得到一個*字符的字符串。然後,您可以通過簡單的字符串操作移動目錄。
MYMACRO = R 「($(PROJECTDIR))」;正在爲我工作。
我需要這個很長一段時間,這是一個完美的解決方案。 我的測試用例在運行exe時試圖找到相對於bin文件夾的輸入文件路徑,並將輸入文件路徑相對於$(ProjectDir)。因此,我可以讓VS項目感到高興或者exe,但不是兩者兼而有之。
此解決方案完美地工作,使他們都很高興。
感謝@mvidelgauz的寶貴信息。
E.g.通過編譯器選項'/ D'將它作爲宏符號傳遞(可能只需要在項目設置中使用宏定義)。在C++代碼中,你可以使用它。 –