三胞 胎
Triplet 是跨編譯中用來完整擷取目標環境 (CPU、OS、編譯程式、運行時間等) 的單一方便名稱的標準詞彙。
在 vcpkg 中,三胞胎會描述每個連結庫的虛構「目標組態集」。 在三重程式中,連結庫通常會使用相同的組態來建置,但並非必要專案。 例如,您可以有一個以靜態和zlib
動態方式建openssl
置的三元組,一個以靜態方式建置,另一個會以動態方式建置它們兩者(全都針對相同的目標 OS 和架構)。
單一組建會取用最多兩個三胞胎的檔案:目標三胞胎和主機三元組。 如果您需要為不同的連結庫套用不同的設定,您必須使用該設定組合來建立單一自定義三元組。 如需如何完成這項作業,請參閱 個別埠自定義 。
vcpkg 隨附許多常見平臺和組態的預先定義三元組。 執行 vcpkg help triplet
以取得環境中可用的三胞胎清單。
若要選取目標三重項:
- 在傳統模式中:
- 使用三重名稱限定套件參考,例如
zlib:x64-windows-static-md
。 - 傳遞
--triplet=<triplet>
。
- 使用三重名稱限定套件參考,例如
- 在 CMake 中:
- 在 MSBuild 中:
- 設定
VcpkgTriplet
。
- 設定
若要選取目前電腦的主機三重項:
- 在傳統模式中:
- 在 CMake 中:
- 在 MSBuild 中:
- 設定
VcpkgHostTriplet
。
- 設定
資料夾中包含 triplets\community
的 Triplets 不會由策劃的登錄持續整合進行測試,但社群通常會要求。 因為我們沒有持續涵蓋範圍,埠更新可能會中斷與社群三胞胎的相容性。 我們很高興接受並審查旨在解決這些三重奏問題的貢獻。
使用社群三元組時,套件安裝期間將會列印如下的訊息:
-- Using community triplet x86-uwp. This triplet configuration is not guaranteed to succeed.
-- [COMMUNITY] Loading triplet configuration from: D:\src\vcpkg\triplets\community\x86-uwp.cmake
您可以藉由取代現成的三胞胎或為特定專案建立新的三胞胎來擴充 vcpkg。
首先,將內建三重檔案從 triplets\
目錄複製到不同的文件系統位置。 然後,在與 vcpkg 互動時,將該目錄新增至重疊三重路徑清單。
- 在 指令清單模式中,您可以使用
$.vcpkg-configuration.overlay-triplets
。 - 從 CMake 使用 vcpkg 時,您可以設定
VCPKG_OVERLAY_TRIPLETS
。 - 從 MSBuild 使用 vcpkg 時,您可以將 新增
--overlay-triplets=...
至 MSBuild 其他選項。 - 直接使用 CLI 時,您可以傳遞
--overlay-triplets=...
。 - 您可以將環境變數設定
$VCPKG_OVERLAY_TRIPLETS
為重疊路徑清單。
如需更詳細的逐步解說,請參閱我們的 重疊三重奏範例 。
注意
三重名稱只能包含小寫英數位元和連字元。
執行任何 vcpkg 命令時的預設三重項是 %VCPKG_DEFAULT_TRIPLET%
,如果未定義環境變數,則為平臺特定的選擇。
- Windows:
x64-windows
- Linux:
x64-linux
- OSX:
x64-osx
建議您在建立新的三胞胎時使用系統化的命名配置。 Android 工具鏈命名配置是靈感的好來源: https://developer.android.com/ndk/guides/standalone_toolchain.html。