![]() |
如果您的擴充功能只會用在單一專案上,它們可以放在一個獨立的 .jam
檔案中,並由您的 Jamroot.jam
導入。如果這些擴充功能會用在許多專案上,使用者會感謝您額外完善的設計。
using
規則提供了一種標準機制來載入和設定擴充功能。為了使其運作,您的模組應該提供一個 init
規則。這個規則會使用與傳遞給 using
規則相同的參數來呼叫。允許的參數集由您決定。例如,您可以允許使用者指定路徑、工具版本和其他選項。
以下是一些有助於使 Boost.Build 更一致的準則:
init
規則不應該失敗。即使使用者提供了錯誤的路徑,您也應該發出警告並繼續執行。設定可以在不同的機器之間共享,在一台機器上錯誤的值在另一台機器上可能是正確的。
優先指定要執行的命令,而不是指定工具的安裝路徑。首先,這提供了更多的控制:可以指定
/usr/bin/g++-snapshot time g++
作為命令。其次,雖然有些工具有一個邏輯上的「安裝根目錄」,但最好是使用者不必記住特定工具需要完整的命令還是路徑。
檢查是否有多次初始化。使用者可能會嘗試多次初始化模組。您需要檢查這一點並決定如何處理。通常,除非您支援多個版本的工具,否則重複初始化是使用者錯誤。如果可以在初始化期間指定工具的版本,請確保版本始終被指定,或者從不被指定(在這種情況下,工具只初始化一次)。例如,如果您允許
using yfc ; using yfc : 3.3 ; using yfc : 3.4 ;
那麼不清楚第一次初始化對應的是工具的 3.3 版、3.4 版還是其他版本。這可能會導致使用相同版本建置兩次。
如果可能,init
必須可以在沒有參數的情況下呼叫。在這種情況下,它應該嘗試自動偵測所有必要的資訊,例如,透過在 PATH
或常見的安裝位置中尋找工具。這通常是可行的,並允許使用者簡單地寫入
using yfc ;
考慮使用 tools/common
模組中的功能。您可以查看 tools/gcc.jam
如何在 init
規則中使用該模組。