面向 WDK 开发人员的 MSBuild 入门教程

本部分向熟悉 Build.exe 和 NMake.exe的 WDK 开发人员介绍了一些基本的 MSBuild 术语。 本部分介绍简单 MSBuild 项目的构造。

与 MSBuild 相关的 Nmake 概念

如果已使用 WDK 的 Build.exe 和早期版本(WDK 8 之前),则可能熟悉 NMake.exe 使用的术语和概念。

  • command - 调用命令行工具。
  • target - 描述一个命名的命令序列。
  • 依赖项 - 描述依赖于其他目标的目标。
  • Nmake 在带有一个或多个目标的 Makefile 上被调用。 然后,它会以递归方式运行所有依赖项,然后运行目标命令。
  • Nmake 文件可以包含用于可靠管理生成结构的其他生成文件。
  • Nmake 还支持创建将替换为命令参数的命名变量。
  • Nmake 还支持由 Make.exe 本身分配的自动变量,例如当前目录或路径的名称。
  • 在单次构建期间,目标不会运行两次。 运行后,假定目标已完成其工作,并且不会再次运行,即使生成中的后续目标依赖于它。

MSBuild 概念

  • C++项目的主要 MSBuild 文件扩展名是.vcxproj。

  • 命令现在称为 任务,它们不只是调用命令行进程。 而是,任务是 MSBuild 可用于执行原子生成操作的可执行代码单元。 有关任务的完整列表,请参阅 特定于 Visual C++ 的 MSBuild 任务

  • 如以下示例所示,MSBuild 使用 UsingTask 元素从其公共语言运行时 (CLR) 程序集导入任务。

    <UsingTask TaskName="TaskName" AssemblyName="AssemblyName" />
    
  • 目标按特定顺序将任务组合在一起,并允许将生成过程划分为较小的单元。

  • PropertyGroup 允许使用用户友好格式定义属性。 以下示例显示了 PropertyGroup 格式。

    <PropertyGroup>
      <ProductVersion>9.0.30729</ProductVersion>
    </PropertyGroup>
    
  • Item属性的面向对象的变体。 虽然属性格式为名称/值,但项格式为名称/对象,其中对象具有多个属性。 是对象的数组。

  • 属性 使用 格式 $(project) 引用,而项目用 @(name) 格式引用。

  • ItemGroup 是 Items 的集合

  • ItemGroups 通常是要编译的所有文件的列表。 然后,使用 @(itemname) 表示法将文件集合传递给任务。 有关使用 Items 的详细信息,请参阅 MSBuild 项

  • MSBuild 具有许多 内置属性 ,还可以在项目文件中引用这些属性。

  • 有关 MSBuild 和生成任务的详细信息,请参阅 MSBuild 概念MSBuild 参考