2014-10-07 133 views
0

我想使用宏來爲C++項目自動生成構建版本。在資源文件中使用宏

如果我這樣做,一切工作正常。

Versioning.h

... 
#define VERSION_MAJOR 1 
#define VERSION_MINOR 0 
... 

 

MyApp.rc

... 
#include "Versioning.h" 

VS_VERSION_INFO VERSIONINFO 
FILEVERSION VERSION_MAJOR, VERSION_MINOR, 0, 0 
PRODUCTVERSION VERSION_MAJOR, VERSION_MINOR, 0, 0 
FILEFLAGSMASK 0x3fL 
... 

 

但是,如果我嘗試包括任何更復雜的,如數學中,編譯器生成錯誤

#define VERSION_MAJOR (2/2) 

error RC1013: mismatched parentheses 
error RC2104: undefined keyword or key name:/

 

我需要用更復雜的數學表達式,調用其他類,從宏觀中執行字符串比較,等等。

我的猜測是我寫的宏沒有問題,而是資源文件處理宏的方式有問題。

任何想法?

注:我使用Visual Studio 2013旗艦版更新3

+0

這看起來像是一個醜陋的解決方案: -/ – 2014-10-07 19:46:03

+0

如果您對設置版本號有一些奇怪的要求,請編寫一個程序,用「工作」版本和您需要的值寫出一個文件。 – crashmstr 2014-10-07 19:47:19

+0

@crashmstr我正在嘗試使用Visual Studio用於爲.NET應用程序自動生成版本號的相同算法。 – 2014-10-07 19:49:59

回答

1

一個資源編譯器是不是作爲一個源代碼編譯爲靈活。您不能在資源腳本中使用複雜的宏。如果您需要,您將不得不使用單獨的預處理器來執行計算併爲資源編譯器生成必要的宏值以供使用。