有和没有提升的项目建设

时间:2016-05-13 14:39:26

标签: c++ visual-studio boost msbuild propertysheet

我有一个可以使用boost库的项目,它也不能使用它。 我有一个可以添加到项目中的属性表use_boost,并设置了boost的路径和值为<PreprocessorDefinitions>的{​​{1}}代码。

在代码中我有类似的东西:

I_AM_USING_BOOST

因此,如果我不想使用boost进行构建,我会删除属性表。 如果我想使用boost进行构建,我会将属性表添加到项目中。

现在,我想构建库的两种变体:一种使用boost,另一种不使用boost。

我可以拥有一个包含两个不同版本的项目:一个有boost,一个没有boost,但是不能手动添加或删除属性表?

我使用批处理文件中的msbuild构建。

1 个答案:

答案 0 :(得分:0)

作为我的解决方案,我添加了一个新项目配置(Release_no_boost),在该配置中,我使用了boost库删除了属性表。

因此,在批处理文件中,我现在可以通过调用不同的配置来为两个变体运行msbuild。 我现在在批处理文件中:

msbuild /t:rebuild /p:Configuration=Release D:\projects\some_test\test_1\test_1.vcxproj
msbuild /t:rebuild /p:Configuration=Release_no_boost D:\projects\some_test\test_1\test_1.vcxproj

这也可用于具有多个项目的解决方案,但需要创建解决方案配置,并且对于构建的解决方案中的每个项目,设置所需的项目配置。

批处理的不同之处在于,它不是项目文件,而是作为参数提供给解决方案文件:

msbuild /t:rebuild /p:Configuration=Release D:\projects\some_test\some_test.sln
msbuild /t:rebuild /p:Configuration=Release_no_boost D:\projects\some_test\some_test.sln