2014-03-19 103 views
1

我的項目中有一個文件,其中包含項目版本號。我必須將該文件的內容作爲代碼中的預處理器定義。在Visual C++中設置文件內容的預處理器定義

我需要的是以某種方式將文件中的值作爲/ D參數傳遞給編譯器。

我嘗試添加預處理器定義

VERSION=$(Version) 

,並設置在預生成步驟版本環境變量,但我沒有找到一個方法來做到後者,所以我卡住了。

+3

使用#define自動生成.h文件,該文件包含在.cpp或.rc文件中,是一種簡單的樣板解決方案。控制一個/ D編譯器選項可能是可能的,這取決於你如何構建,很少很實用。 –

回答

2

作爲一種解決方法,可以創建預構建步驟,該步驟調用讀取文件並在頭中生成宏定義的腳本。然後這個頭文件可以包含在我的項目中。

但是,我不覺得這個解決方案很好,我希望有更好的解決方案。

+3

這實際上是我的一個項目如何處理版本控制。作爲預構建步驟,它從Mercurial獲取版本號,並將相應的'#define'寫入頭文件。標題包含在我的項目中,所以我可以使用剛生成的版本號,而無需額外的工作。 – computerfreaker

+0

我認爲這是一個可以接受的解決方案。 –

+0

我接受了當前的投票和評論,但我希望有人會提出更準確的解決方案。 – hthms

1

作爲生成.h文件的替代方法,您還可以生成.vsprops(屬性表)文件。 .vsprops文件是.vcproj文件.h文件對.cpp文件。特別是,您可以在屬性表中定義/D命令行選項。這是/D UNICODE通常通過默認屬性表定義的方式。

額外的好處是,你也可以設置連接器的/VERSION標誌,這是你不能通過頭文件做的。