![]() |
本節說明安裝已建置目標和任意檔案的各種方法。
要安裝已建置的目標,您應該使用遵循通用語法的 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
功能為已安裝的可執行檔指定其他路徑。