C++ 在不同的属性表中定义用户宏

C++ 在不同的属性表中定义用户宏,c++,visual-studio,visual-studio-2017,C++,Visual Studio,Visual Studio 2017,是否有可能做到以下几点: Library "D:\output\\VS_Output\2016\Debug\SomeProject\SomeProject.lib" ... branch.prop: // excerpt <PropertyGroup Label="UserMacros"> <Branch>Trunk</Branch> </PropertyGroup> // excerpt <PropertyGroup>

是否有可能做到以下几点:

Library "D:\output\\VS_Output\2016\Debug\SomeProject\SomeProject.lib" ...
branch.prop

// excerpt
<PropertyGroup Label="UserMacros">
    <Branch>Trunk</Branch>
</PropertyGroup>
// excerpt
<PropertyGroup>
    <OutDir>D:\output\$(Branch)\VW$(VW_VERSION)\$(KN_BUILD)\</OutDir>
    <IntDir>D:\output\$(Branch)\VS_Output\$(VW_VERSION)\$(KN_BUILD)\$(ProjectName)\</IntDir>
</PropertyGroup>
问题

问题是,我在我的项目中使用了两个属性表,如果我显示我的项目属性,我会看到它显示了正确的输出目录和中间目录(例如“D:\output\Trunk\VW2016\Debug\”),但当我编译我的项目时,它不起作用,这意味着缺少用户宏,因此日志显示如下行:

Library "D:\output\\VS_Output\2016\Debug\SomeProject\SomeProject.lib" ...
注意日志行中的
\
而不是
\Trunk\

是否有某种方式可以使属性表与不同属性表中定义的用户宏一起工作?比如说给它们筑巢或者其他什么把戏

我希望避免在每个项目中手动定义我的输出目录和中间目录(这会起作用)

没有其他可行的想法

  • 使用读取当前svn路径并设置环境变量=>的预构建脚本,因为环境变量仅由VS在VS start上读取,因此如果预构建脚本更改,则VS在重新启动之前不会识别此变量
我为什么需要这个


我需要这个,因为我经常被迫在主干和分支之间切换以创建修补程序,因此希望避免由于覆盖中间/输出文件而导致构建时间过长…

您可以在
common.prop
中导入您的
分支.prop
,如下所示:

<ImportGroup Label="PropertySheets" >
    <Import Project="branch.prop"/>
</ImportGroup>


看起来不错,这可以通过IDE来完成,还是只能手动完成?好的,在了解了IDE的工作原理和存在性后,我发现了如何使用IDE来完成这项工作:只需右键单击属性表并单击“添加现有属性表”,即可将其添加到下面。