我试图将一些编译时属性注入到像这样的vs2013 c ++项目中
在vcxproj文件中,我添加并默认了INCREMENT_BUILD_VERSION,如下所示:
<Project> ...
<PropertyGroup>
<IBN>INCREMENT_BUILD_VERSION=666</IBN>
</PropertyGroup>
并像这样使用它: 在编译器部分
<ClCompile> ...
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);$(IBN)</PreprocessorDefinitions>
并在资源部分
<ResourceCompile> ...
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions);$(IBN)</PreprocessorDefinitions>
然后我在头文件中使用默认属性:
#define PG_MAJOR_VERSION 6
#define PG_MINOR_VERSION 1
#define PG_MICRO_VERSION 22
#define PG_BUILD_VERSION INCREMENT_BUILD_VERSION <--- property from vxproj
#define PG_BUILD_ALL_STR_VERSION STRINGIZE(PG_MAJOR_VERSION) "." STRINGIZE(PG_MINOR_VERSION) "." \ STRINGIZE(PG_MICRO_VERSION) "." STRINGIZE(PG_BUILD_VERSION)
#define PG_BUILD_ALL_FILE_VERSION PG_MAJOR_VERSION,PG_MINOR_VERSION,PG_MICRO_VERSION,PG_BUILD_VERSION
#pragma message("INFO: SETTING BUILD VERSION TO " PG_BUILD_ALL_STR_VERSION)
当我在ide中构建它时,一切都运行得非常好,我收到了#pragma消息 信息:将构建版本设置为6.1.22.666
然而,只要我尝试通过msbuild.exe构建它 C:\ Progra~2 \ MSBuild \ 12.0 \ bin \ msbuild sol.sln / p:Configuration =&#34; Release&#34; /吨:重建
我从资源编译器收到有关缺少INCREMENT_BUILD_VERSION的错误 从编译#pragma我得到消息
信息:将构建版本设置为6.1.22.INCREMENT_BUILD_VERSION
我想我没有正确定义属性,而msbuild忽略了它,但它在IDE中没问题。
任何想法?
TIA。