我将项目构建工具链从python / MinGW迁移到msbuild / MSVC。 我需要在每次构建之前对某些c ++文件执行额外的预处理。 这是由我自己的python脚本执行的。 有没有办法在不编写扩展名的情况下执行此操作? '自定义构建工具'不允许修改当前的源文件。有没有选择"链"这与构建步骤?
答案 0 :(得分:1)
在Visual C ++中添加自定义预处理任务
由于您不想修改源文件,因此可以使用复制任务将scource文件备份到中间目录:
<ItemGroup>
<MySourceFiles Include="c:\MySourceTree\**\*.cpp"/>
</ItemGroup>
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="Destination\Intermediate directory"
/>
</Target>
然后使用csc任务在build:
之前编译它<ItemGroup>
<Compile Include="…\Intermediate directory\filename">
</Compile>
</ItemGroup>
<Target Name="BeforeBuild">
<Message Text="Running your python script on the Intermediate directory folder..."/>
</Target>
有关详细信息,请参阅"Preprocessing" each source file before compilation?。
评论更新:
问题是关于你是否可以在构建时调用自己的目标 失败。
您可以使用MSBuild命令行指定自定义目标来构建它:
msbuild.exe "YouProjectName.vcxproj" /t:BeforeBuild;Build
然后MSBuild将首先构建您的自定义构建,无论您的构建是失败还是成功。
希望这有帮助。