MSBuild(Microsoft Build Engine)是 Visual Studio 背后的构建系统。做老引擎移植、跨平台工程时经常要直接和 .vcxproj、工具集打交道,下面是几条实用经验。
.vcxproj 文件结构速览
工程文件本质是个 XML,所有工程信息都用 XML 元素描述,大致分三类:
- Item——所有参与构建的文件放在
ItemGroup里(杂项文件也可以放进 item)。- Item Metadata——item 的元数据放在
ItemDefinitionGroup。比如对ClCompileitem,可以指定WarningLevel、编译选项等元数据,告诉编译器怎么编它们。
- Item Metadata——item 的元数据放在
- Property——构建配置(如编译器版本)放在
PropertyGroup。可以自定义任意属性,用$(prop_name)或%(prop_name)引用。 - Import——类似 C++ 的
#include,把任意合法元素引进当前文件。