Boost C++ Libraries

PrevUpHomeNext

安装

本节描述安装构建目标和任意文件的各种方法。

基本安装

要安装构建目标,应使用install规则,该规则遵循通用语法。例如

install dist : hello helpers ;

将导致目标hellohelpers移动到相对于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功能为已安装的可执行文件指定其他路径。



[3] 请参阅“特性属性”部分中“自由”的定义。


PrevUpHomeNext