【发布时间】:2016-05-13 14:39:25
【问题描述】:
我有一个项目可以使用 boost 库,也可以不使用它。
我有一个属性表 use_boost 可以添加到项目中,并且设置了 boost 的路径和一个带有值 I_AM_USING_BOOST 的 <PreprocessorDefinitions> 标记。
在代码中我有类似的东西:
#ifdef I_AM_USING_BOOST
#include <boost/any.hpp>
#else
#include <string>
#endif
namespace test
{
#ifdef I_AM_USING_BOOST
using my_defined_type = boost::any;
#else
using my_defined_type = std::string;
#endif
}
因此,如果我不想要带有 boost 的构建,我会删除属性表。 如果我想用 boost 构建,我将属性表添加到项目中。
现在,我想构建库的两种变体:一种使用 boost,一种不使用 boost。
我能否拥有一个包含两种不同构建的项目:一种带有 boost,一种没有 boost,但不能手动添加或删除属性表?
我使用批处理文件中的 msbuild 进行构建。
【问题讨论】:
-
我没有关注。你以后如何使用这种类型?使用
std::string和boost::any命令的模式非常不同。 -
可以,在项目中创建两个不同的目标并为每个目标设置属性。
-
你也可以通过命令行向 msbuild 提供属性
/p:<property>=<value> -
@SergeyA 它实际上被定义为 std::map 或 std::map
标签: c++ visual-studio boost msbuild propertysheet