gpt4 book ai didi

c++ - 使用 vc2010 和 msbuild 的多个构建规则

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:53 31 4
gpt4 key购买 nike

我在 VS2010 中管理一个 C++ 项目,并希望在转到 C++ 编译器之前让所有 .cpp 文件通过外部工具运行。所有迹象似乎都表明这是可能的。参见,例如,here .

由于这会在多个项目中发生,因此将此功能放在一个属性表中然后在所有地方导入此属性表是有意义的。在我接触属性表之前,它的整体看起来是这样的:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<ExtensionsToDeleteOnClean>...</ExtensionsToDeleteOnClean>
<CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>...</AdditionalIncludeDirectories>
<ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
</ClCompile>
<Link>
<AdditionalDependencies>...</AdditionalDependencies>
</Link>
<Outputs>...</Outputs>
</CustomBuildStep>
</ItemDefinitionGroup>
</Project>

根据上面的链接文档,我添加了以下几行:

<Project>
<PropertyGroup>
...
<CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
</PropertyGroup>
...
<ItemGroup>
<CustomBuild Include="*.cpp">
<Message>Running Custom Build Step</Message>
<Command>dummy</Command>
<Outputs>dummy</Outputs>
</CustomBuild>
</ItemGroup>
</Project>

这似乎没有效果,而且我的自定义构建工具从未在 ClCompile 之前运行过。我已经尝试了各种移动事物和重命名标签的方法(例如,Xml 编辑器提示 CustomBuild 根据架构甚至无效),但没有任何效果。

我做错了什么?

最佳答案

虽然这是一个很老的问题,但我会尝试回答它。

Include 属性期望在项目目录中找到 *.cpp 文件。如果项目目录中没有 .cpp 文件,则此 CustomBuild“任务”将永远不会启动。

OP 可以做的是

<CustomBuild Include="**\*.cpp">
<Message>Custombuild kicking in</Message>
<Command>echo %(Identity)</Command>
<Outputs>dummy</Outputs>
</CustomBuild>

代替

<CustomBuild Include="*.cpp">
...

他会对项目目录的所有子目录中的所有 .cpp 文件执行 CustomBuild 操作,而不仅仅是等待编译的 .cpp 文件。

如果 .cpp 文件在项目目录下不可用(使用此类项目目录结构时可能会发生),则 OP 必须明确指向正确的“根”目录。

关于c++ - 使用 vc2010 和 msbuild 的多个构建规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341855/

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