【发布时间】:2014-09-16 19:41:03
【问题描述】:
我有一个不包含源代码的 VS 2010 vcxproj。 PreBuildEvent 调用一个批处理文件,该批处理文件使用第三方工具将源代码生成到我的 src\ 目录中。这很好用。问题是第一次生成源代码(或清理后),VisualStudio 并没有真正编译生成的源代码。在随后的构建中,它会编译。这对我的 CI 构建机器来说是一个问题,也让开发人员很烦恼。有什么方法可以让 VS 识别那些生成的文件?
这是我的 .vcxproj 中的一个 sn-p
<ItemDefinitionGroup>
<PreBuildEvent>
<Message>Generating from IDL </Message>
<Command>genNAPIEMsgs.bat</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="src\*.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\*.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ItemGroup>
<DDSGeneratedFiles Include="src\*.cpp" />
<DDSGeneratedFiles Include="src\*.h" />
</ItemGroup>
<Target Name="AfterClean">
<Message Text="AfterClean target: removing generated source code" />
<Delete Files="@(DDSGeneratedFiles)" />
</Target>
【问题讨论】:
-
预构建事件的 sn-p 在哪里?
-
谷歌“msbuild 延迟评估”以获得不错的点击率。如果这不成功,那么使用两个项目。
标签: visual-studio-2010 msbuild vcxproj