代码之家  ›  专栏  ›  技术社区  ›  mfkw1

在Visual C中添加自定义预处理任务++

  •  0
  • mfkw1  · 技术社区  · 6 年前

    我正在将我的项目构建工具链从python/MinGW迁移到msbuild/MSVC。 在每次构建之前,我需要对一些c++文件执行额外的预处理。 这是由我自己的python脚本执行的。 有没有办法不用写扩展名就可以做到这一点?”“自定义生成工具”不允许修改当前源文件。是否有任何选项可以将此与构建步骤“链接”在一起?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Leo Liu    6 年前

    在Visual C中添加自定义预处理任务++

    由于您不想修改源文件,因此可以使用复制任务将您的scource文件备份到中间目录:

    <ItemGroup>  
        <MySourceFiles Include="c:\MySourceTree\**\*.cpp"/>  
    </ItemGroup>
    
    <Target Name="CopyFiles">
        <Copy
            SourceFiles="@(MySourceFiles)"
            DestinationFolder="Destination\Intermediate directory"
        />
    </Target>
    

    然后在构建之前使用csc任务对其进行编译:

    <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都将首先生成自定义生成。

    希望这有帮助。