介绍:
Boost使用的编译系统叫做Boost.Jam(Bjam),是一个基于FTJam的构造工具,而FTJam又基于Perforce Jam
细节:
Jam是make(1)(如果你使用UNIX就知道make(1)是什么,在这里简单说明,make(1)是指系统工具类中,名叫make的东西)的一个替代品,Jam的目标是让构造简单的东西更加容易,而让构造复杂的东西变得简单。下面是一个例子:
Main smail : main.c map.c resolve.c deliver.c
misc.c parser.y alias.c pw.c headers.c
scanner.l getpath.c str.c ;
Smail从一打文件进行构造.Jam自动管理依赖的头文件.
Jam非常易于移植:它能在UNIX,VMS,Mac和NT平台上.多数Jamfiles在上述平台上本身就是可移植的.
Jam is unintrusive: it is small, it has negligible CPU overhead, and it doesn't create any of its own funny files (c.f. Odin, nmake, SunOS make).
Jam can build large projects spread across many directories in one pass, without recursing, tracking the relationships among all files. Jam can do this with multiple, concurrent processes.
Jam isn't under the blinkin GNU copyright, so you can incorporate it into commercial products.
构造Boost.Jam
构造好了Bjam以后,要安装它只需要将生成的执行文件拷贝到PATH变量指定的某个路径下就可以了。各个平台都有相应平台的初始构造脚本用来构造可执行程序。这些脚本都接收一个可选参数,用来编译构造的工具集的名称。如果没有给工具集参数没有给,或做可用工具集的检测,并选用一个。构造脚本接受的参数如:
<build script name> [toolset]
无参数的运行脚本可能是最好的选择。
Boost发布的Boost.Jam的源代码在BOOST_ROOT/tools/build/jam_src.
如果脚本检测适当的工具集失败可能是因为你的工具集不能自动检测。在这些情况下,你需要在脚本参数那里指定工具集,当然这假定工具集在PATH中可以找到.注意:编译Boost.Jam的工具集和构造Boost的工具集是独立的。