從my earlier post,我想通了,爲什麼命令通宏來執行nmake
build /nmake "USER_C_FLAGS=/DMyVersion=3"
不關聯與價值的定義MyVersion
。 MSDN says that -
使用/ Dname =編譯會導致該符號沒有關聯的 值。所以,雖然符號仍然可以用來有條件地編譯 的代碼,但是符號否則不計算。例如,在 之前的示例程序中,使用/ DTEST =進行編譯將導致編譯器出錯 。這種行爲類似於使用#define或沒有值的 。
我有一個在運行時設置的環境變量,我需要傳遞該env。變量爲Visual Studio 2005 Makefile項目。現在的問題是,我怎麼能通過env。運行時編譯環境變量?一旦過去了,我應該能夠像 -
#define VERSION 11
#ifdef BUILD_VERSION // How to get this macro to the current env. ?
#undef VERSION
#define VERSION BUILD_VERSION
#endif
#define FILE_VERSION VERSION
我沒有看到nmake
文檔的任何標誌傳遞ENV。變量。任何想法都非常感謝。
我認爲你引用的手冊部分是用於定義沒有內容的宏,即文字「/ DMACRO ='」,它與「/ DMACRO」相同。你的例子應該工作。也許你可以發佈你的makefile的相關部分? –