使用 MsBuild Condition
,您可以基于 Configuration 等属性启用/禁用编译。这可能适合您的情况:假设您现在有 'Debug' 和 'Release' 配置,您可以添加 'Debug_OptionB' 和 'Release_OptionB' 配置。在项目文件中,您创建一个基于布尔属性,如果配置包含“OptionB”字符串,则该属性为真:
<PropertyGroup>
<CompilingWithOptionB>$(Configuration.Contains('_OptionB'))</CompilingWithOptionB>
</PropertyGroup>
现在将此属性用于条件编译:
<ClCompile Condition="'$(CompilingWithOptionB)'!='True'" Include="src_a.cpp" />
<ClCompile Condition="'$(CompilingWithOptionB)'=='True'" Include="src_b.cpp" />
如果要包含/排除多个源文件,您可以将它们放在一个单独的 ItemGroup 中,该 ItemGroup 然后具有条件,甚至在单独的属性表中。
I can write simple .vcxproj files, but they usually end up being quite beginner-like and poor quality
我建议不要自己编写它们,而是让 VS 为您创建它们,然后添加修改。这更容易,也可以确保与 VS 的集成保持不变。特别是它使添加/删除/排序/检查属性表更容易(您正在使用它们来设置常见的配置选项,对吧?)。