本节描述安装构建目标和任意文件的各种方法。
要安装构建目标,应使用install
规则,该规则遵循通用语法。例如
install dist : hello helpers ;
将导致目标hello
和helpers
移动到相对于Jamfile目录的dist
目录中。可以使用location
属性更改目录。
install dist : hello helpers : <location>/usr/bin ;
虽然可以通过将目标名称更改为/usr/bin
来实现相同的效果,但使用location
属性更好,因为它允许您使用助记的目标名称。
location
属性在位置不固定但取决于构建变体或环境变量时尤其方便。
install dist : hello helpers : <variant>release:<location>dist/release <variant>debug:<location>dist/debug ; install dist2 : hello helpers : <location>$(DIST) ;
指定要安装的所有库的名称可能很乏味。install
允许您仅指定要安装的顶级可执行文件目标,并自动安装所有依赖项。
install dist : hello : <install-dependencies>on <install-type>EXE <install-type>LIB ;
将查找hello
依赖的所有目标,并安装所有这些目标(这些目标要么是可执行文件,要么是库)。更具体地说,对于每个目标,将递归地查找指定为源或依赖属性的其他目标。一个例外是使用 use
功能引用的目标不被考虑,因为该功能通常用于引用仅包含头文件的库。如果指定了目标类型的集合,则仅安装该类型的目标,否则将安装所有找到的目标。
默认情况下,install
规则将从其源中剥离路径。因此,如果源包含a/b/c.hpp
,则将忽略a/b
部分。要使install
规则保留目录层次结构,您需要使用<install-source-root>
功能来指定您正在安装的层次结构的根目录。将保留相对于该根目录的相对路径。例如,如果您编写
install headers : a/b/c.h : <location>/tmp <install-source-root>a ;
将创建名为/tmp/b/c.h
的文件。
glob-tree规则可用于查找给定目录下的所有文件,从而可以轻松安装整个目录树。
当需要将目标安装到多个目录时,可以使用alias
规则。
alias install : install-bin install-lib ; install install-bin : applications : /usr/bin ; install install-lib : helper : /usr/lib ;
因为install
规则只是复制目标,所以大多数自由特性[3]在install
规则的要求中使用时无效。唯一重要的两个是 dependency
和在Unix上dll-path
。
(Unix 特定) 在Unix上,使用Boost.Build构建的可执行文件通常包含所有已用共享库的路径列表。对于安装,这是不需要的,因此Boost.Build使用空路径列表重新链接可执行文件。您还可以使用dll-path
功能为已安装的可执行文件指定其他路径。