2012-06-12 32 views
0

my earlier post,我想通了,爲什麼命令通宏來執行nmake

build /nmake "USER_C_FLAGS=/DMyVersion=3" 

不關聯與價值的定義MyVersionMSDN 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。變量。任何想法都非常感謝。

+0

我認爲你引用的手冊部分是用於定義沒有內容的宏,即文字「/ DMACRO ='」,它與「/ DMACRO」相同。你的例子應該工作。也許你可以發佈你的makefile的相關部分? –

回答

1

MSDN將爲此回答nmake Environment-Variable Macros

請注意這裏:「使用/ E選項使從環境變量繼承的宏覆蓋makefile中具有相同名稱的任何宏」。

+0

+1感謝您的幫助意向。無論如何,我發現它:) – Mahesh