Boost.Build 简明教程

时间:2024-01-09 20:17:20

Boost.Build 简明教程

目录
1. 介绍
2. 构建过程
3. 基本任务
4. 项目管理
5. 最佳实践
6. 规则参考
7. 特征参考

介绍

编译器和平台无关编译系统
Boost.Build是一个高级编译系统, 它能尽可能容易的管理C++项目集. 其思想是在配置文件中指定编译程序的要素。例如,它不需要告诉Boost.Build如何使用某个编译器。Boost.Build支持多个编译程序,并知道如何使用它们。如果你创建一个配置文件,你只需要告诉Boost.Build在何处寻找源文件,调用哪些可执行文件,Boost.Build使用哪个编译器。然后,Boost.Build将尝试查找编译器并自动生成程序。

Boost.Build支持许多不包含任何编译器特定选项的编译器的配置文件。配置文件完全是编译器独立的。当然,可以设置选项是否应该优化代码。这些选项都是boost.build语言写的。一旦选择编译器去编译程序, Boost.Build会将配置文件中的选项翻译成相应编译器的命令行选项。这样就有可能写一次配置文件,在不同的平台上用不同的编译器构建程序。

Boost.Build只支持C++和C项目. 它是为在不同平台上用不同编译器编译和安装Boost C++库而创造的.

编译过程

Jamfiles和b2解析器
Boost.Build编译器叫b2. 如果你下载和编译了Boost C++库, 你就已经有了b2。b2查找配置文件,读取配置文件并编译相应的项目。它还接受各种命令行选项,例如显示在b2编译项目过程中所有的命令。

项目可以很大,也可以由许多组件组成,其源代码分布在多个目录中。不需要为整个项目创建一个大的配置文件,组件通常会得到他们自己的配置文件。这对于Boost.Build没有什么不同:在一个大的项目中, 有很多的配置文件会被发现和并被b2解释.

对Boost.Build来说, 每个有配置文件的目录是一个项目: 如果目录里有配置文件. 对Boost.Build来说, 子目录里的一个组件与包含很多组件的软件没有区别.

b2配置文件叫Jamfile.jam. 有jam后缀的文件叫Jamfiles. 如果b2发现当前目录下有Jamfile, 它会查找父目录中的Jamfiles. b2逐层递归查找上级目录直到找到Jamroot.jam文件. Jamroot.jam与Jamfile.jam没有区别, 它只是告诉b2不需要再查找下去.

为什么b2在父目录中查找Jamfiles,是因为它可以进行组设置。如果一些组件有一些相同的设置, 他们可以存储在父目录的Jamfile中,这些设置会自动应用到子目录组件中。

注意:
b2必须要查找Jamroot.jam文件, 没有Jamroot.jam文件就会报错. 如果当前目录下有Jamroot.jam文件, 其它Jamfile.jam文件就不需要了. 如果Jamroot.jam在父目录, 当前目录必须有Jamfile.jam文件, 否则, b2不会做任何事情.