在我的 C++ 项目中,我有(大量).foo 文件,这些文件使用在 .foo 文件上运行 foo2bar 的自定义构建步骤转换为 .bar 文件。
生成的 .bar 输出文件不会在任何构建步骤中进一步使用。然而,它在运行 c++ 项目可执行输出时使用。
这里的问题是 .foo 文件处理它们自己内部嵌套的类似 #include 的依赖文件处理。这会扰乱自定义构建步骤。 这不仅仅是 .foo => .bar 它是 .foo +(从 .foo 内容派生的大量包含)=> .bar
我基本上希望自定义构建步骤始终运行构建命令,并让 foo2bar 编译器确定输出 .bar 是否是最新的。 如何做到这一点?
尝试过:
如何使 vc++ 项目在项目源文件上运行“具有自己的包含依赖项处理的自定义编译器”? 它本身不一定是自定义构建步骤。
如果您希望始终让 MsBuild 调用自定义构建步骤,这里有一个解决方法:
只需在 Outputs 中指定一些不存在的文件,自定义构建步骤将始终运行。即使您的项目是最新的,它也会运行,因为永远找不到输出文件。
例如
<ItemDefinitionGroup>
<CustomBuildStep>
<Command>xxxx</Command>
<Outputs>$(TargetName).missing</Outputs>
<Inputs>xxxx</Inputs>
</CustomBuildStep>
</ItemDefinitionGroup>
希望能帮到你。