gpt4 book ai didi

visual-c++ - 根据文件名有条件地从 VisualStudio 2013 C++ 项目中排除文件

转载 作者:行者123 更新时间:2023-12-04 06:25:01 27 4
gpt4 key购买 nike

我试图让 Visual Studio 2013 的 msbuild .vcxproj 自动将某些 .cpp 项目文件标记为 <ExcludedFromBuild>true</ExcludedFromBuild>基于 .cpp 文件名。

我的目标是让我的程序(约 100 个开发人员,约 1000 个 vcxproj)轻松支持单元测试代码的仅调试编译,这些代码将全部编写在具有 _utest.cpp 后缀的 .cpp 文件中。任何以 _utest.cpp 结尾的 .cpp 文件都会自动从发布版本中排除,当程序员切换到发布解决方案配置时,他们可以在 Visual Studio 的解决方案资源管理器中看到这一点。

通过将它添加到我的共享 .props 文件中,我已经能够阻止在 Release 中构建后缀为 _utest.cpp 的文件

<Target Name="Remove _utest.cpp" BeforeTargets="ClCompile" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ItemGroup>
<ClCompile Remove="*_utest.cpp" />
</ItemGroup>
</Target>

但这并没有在解决方案资源管理器中提供一个视觉指示器,表明这些文件不是发布构建的一部分。

我已经在基于 %(Identity) 的 ItemDefinitionGroup 中尝试了一个条件,但没有成功

<ItemDefinitionGroup Condition="'%(Identity)'=='throttle_utest.cpp'">
<ClCompile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
</ItemDefinitionGroup>

(Visual Studio 拒绝加载这个错误“不允许在位置 1 引用内置元数据标识”)

<ItemDefinitionGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch(%(Identity), '_utest\.cpp$'))">
<ClCompile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
</ItemDefinitionGroup>

(Visual Studio 加载了此更改,但未执行任何操作以从构建中排除匹配文件)。

有没有一种方法可以根据文件名有条件地排除文件并在解决方案资源管理器中获得可视指示器?

最佳答案

我认为这样的事情应该可行。右下<Project>标签。

<ItemGroup Condition="'$(Configuration)'!='Debug'">
<ClCompile Include="*_utest.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
</ItemGroup>

关于visual-c++ - 根据文件名有条件地从 VisualStudio 2013 C++ 项目中排除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24514495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com