如何:向 MSBuild 项目添加自定义生成工具
自定义生成工具是一种与特定文件关联的用户定义的命令行工具。
对于特定文件,请在项目文件 (.vcxproj
) 中指定要执行的命令行、任何其他输入或输出文件,以及要显示的消息。 如果 MSBuild 确定输出文件相对于输入文件而言已过期,则会显示消息并执行命令行工具。
指定自定义生成工具和自定义生成步骤
若要指定自定义生成工具的执行时间,请在项目文件中使用 CustomBuildBeforeTargets
和/或 CustomBuildAfterTargets
XML 元素。 例如,可以指定自定义生成工具在 MIDL 编译器之后和 C/C++ 编译器之前运行。 指定要在运行特定目标之前执行该工具的 CustomBuildBeforeTargets
元素。 使用要在运行特定目标之后执行该工具的 CustomBuildAfterTargets
元素。 使用这两个元素在两个目标执行之间运行该工具。 如果未指定任一元素,则自定义生成工具会在其默认位置(MIDL 目标之前)执行。
自定义生成步骤和自定义生成工具共享在 CustomBuildBeforeTargets
和 CustomBuildAfterTargets
XML 元素中指定的信息。 只需在项目文件中指定这些目标一次。
添加自定义生成工具
向项目文件添加一个项组,并为每个输入文件添加一个项。 指定命令及其输入、其他输入、输出和消息作为项元数据,如下所示。 此示例假定“faq.txt”文件与项目位于同一目录中。 自定义生成步骤将其复制到输出目录。
<ItemGroup> <CustomBuild Include="faq.txt"> <Message>Copying readme...</Message> <Command>copy %(Identity) $(OutDir)%(Identity)</Command> <Outputs>$(OutDir)%(Identity)</Outputs> </CustomBuild> </ItemGroup>
定义将在生成中的何处执行自定义生成工具
将以下属性组添加到项目文件。 必须指定至少一个目标。 如果只想在特定目标之前(或之后)执行生成步骤,则可以省略另一个目标。 此示例在编译之后但在链接之前执行自定义步骤。
<PropertyGroup> <CustomBuildAfterTargets>ClCompile</CustomBuildAfterTargets> <CustomBuildBeforeTargets>Link</CustomBuildBeforeTargets> </PropertyGroup>
另请参阅
演练:使用 MSBuild 创建 C++ 项目
如何:在 MSBuild 项目中使用生成事件
如何:向 MSBuild 项目添加自定义生成步骤
用于 MSBuild 命令和属性的常用宏
MSBuild 常见的项元数据