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

时间:2018-11-06 07:55:00

标签: c++ visual-studio visual-studio-2017

是否可以执行以下操作:

branch.prop

// excerpt
<PropertyGroup Label="UserMacros">
    <Branch>Trunk</Branch>
</PropertyGroup>

另一个属性表common.prop

// 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读取,因此,如果预构建脚本进行了更改,则VS在重新启动之前无法识别它

我为什么需要这个

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

1 个答案:

答案 0 :(得分:1)

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

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