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] 請參閱「功能屬性」一節中「free」的定義。


PrevUpHomeNext