拓展设置拓展设置(ExtensionSettings)和 用户宏(UserMacro) 当前并不需要,所以我们可以设置它们为空:
现在我们需要做的就是,为整个项目设置构建目标以及配置属性页。保留项目文件,并在单独的以.targets为后缀的文件中定义目标以及任务,这是一个好的编程风格。于是,我们创建boost.targets文件,并将它导入到项目之中。 导入这是此刻我们所需的全部设置。接下来,为C++项目导入默认定义。这个导入不是必须的,属于“锦上添花”的事情:
拓展目标(ExtensionTargets)是我们添加代码到工程里面的地方。MSBuild 推荐为设置保留 .vcproj 文件,同时在 .targets 文件中定义目标(Targets)和任务(Tasks)。 我们将所有的代码移到boost.targets文件之中,并像这样引用它:
这样我们的项目配置就完成了! Targets现在我们需要定义在构建的时候做什么,并且我们在定义目标时这样做。Visual Studio 已经建立了有一个预定义的目标集文件:Build, Rebuild, 和 Clean:
上述定义可以分别执行构建,重建和清除操作。我们还记得以前我们构建boost,构建Jamfile工具b2.exe,如果在git库上克隆的在包含的目录下重新加载入'boost'。我们可以通过addind中的先决条件,用DependsOnTarget属性来构建目标。
要构建Jamfile工具 b2.exe,我们需要执行本地路径"tools\build\src\engine\".下的build.bat文件。我们这样做的目标是构建JamTool:
这些目标执行build.bat并且复制*.exe文件到boost的根目录,我们可以运行build命令集。 如果从 Git 仓库克隆 boost 项目,那么 boost 目录所包含的所有文件都将丢失。想要填入它丢失的信息,我们需要执行像"b2.exe headers"这样的 Jam 工具。我们将这个过程放在 BoostHeaders target 中做:
注意,这个过程依赖于 b2.exe 已经被创建完成。因此我们添加 DependsOnTargets="JamToolBuild"这句话来确认 b2.exe 被创建并且可以被执行。 现在我们准备创建整个库:
现在就要做最有趣的部分:配置 Boost 且把这些配置信息整合到 Visual Studio 属性系统中。 配置为了将 Boost 集成进 Visual Studio,我们需要创建允许我们设置所有构建选项和开关的属性页。我们可以通过创建带 ProjectSchemaDefinition 和 Rule 的 XML 文件来做到这点。 用户界面我在我的其它文章里深入地阐述了这一话题:第一部分和第二部分。第一部分介绍了属性页的架构(schema),第二部分描述了如何将这些元素加入到一个属性页中。 我们先创建 该页将允许我们设置在 Jamroot 中提及的构建选项。如果选项未被定义(单元格留空),构建器将使用设置在 Jamfile 中的默认值。每个配置的设定项都被分开存储,互相完全独立。 值得注意的是,每个设定项都有一个像下面这样的简短描述,用于描述它的功能。如果要查看更多信息可以按 F1 键,在打开的 URL 中有更深入的讲解。 我个人最爱的是 Output Verbosity 设定项: 它允许你选择在构建时显示信息的多少和内容。这些等级在 b2 的默认帮助画面上是隐藏的,通常看不到它们。 |