閱讀英文

共用方式為


Triplet 變數

本文說明三重檔案可用的 vcpkg 變數。 三重檔案也可以包含使用者定義的變數。

如需三胞胎功能的高階檢視,請參閱三胞胎概念檔

變數

VCPKG_TARGET_ARCHITECTURE

指定目標計算機架構。

有效選項包括x86x64、、、riscv32s390xloongarch32armarm64ecarm64ppc64leriscv64loongarch64mips64和 。wasm32

VCPKG_CRT_LINKAGE

指定所需的 CRT 連結 (適用於 MSVC)。

有效的選項為 dynamicstatic

VCPKG_LIBRARY_LINKAGE

指定慣用的連結庫連結。

有效的選項為 dynamicstatic。 如果連結庫不支援慣用的連結類型,則可以忽略此設定。

VCPKG_BUILD_TYPE

您可以將此值設定為 release ,以建置僅限發行的埠版本。 根據預設,此值是空的。 當此值是空的 vcpkg 時,會建置埠的發行和偵錯組態。

VCPKG_CMAKE_SYSTEM_NAME

指定目標平台。

有效的選項包括任何 CMake 系統名稱,例如:

  • 空白 (基於舊版原因的 Windows 桌面)
  • WindowsStore(通用 Windows 平台)
  • MinGW (適用於 Windows 的極簡主義 GNU)
  • Darwin (Mac OSX)
  • iOS (iOS)
  • Linux (Linux)
  • Emscripten (WebAssembly)

VCPKG_CMAKE_SYSTEM_VERSION

指定目標平台系統版本。

此欄位是選擇性的,如果存在,則會以的形式 CMAKE_SYSTEM_VERSION傳遞至組建。

另請參閱 CMake 檔 CMAKE_SYSTEM_VERSION

VCPKG_CHAINLOAD_TOOLCHAIN_FILE

指定要使用的替代 CMake 工具鏈檔案。

這會覆寫所有其他編譯程式偵測邏輯。 根據預設,工具鏈檔案會從 scripts/toolchains/ 適當的平台選取。

注意

若要建立自定義工具鏈檔案,最好先包含現有的工具鏈 ${VCPKG_ROOT}/scripts/toolchains 並加以擴充。 這可確保 vcpkg 可執行檔所設定的基本變數,例如 VCPKG_TARGET_ARCHITECTUREVCPKG_CXX_FLAGSVCPKG_LINKER_FLAGS和其他變數會轉送至 CMake。

另請參閱工具鏈檔案CMake 檔。

VCPKG_CXX_FLAGS

設定不使用 VCPKG_CHAINLOAD_TOOLCHAIN_FILE時要使用的其他編譯程式旗標。

這個選項也有組態特定旗標和 C 語言旗標的表單:

  • VCPKG_CXX_FLAGS
  • VCPKG_CXX_FLAGS_DEBUG
  • VCPKG_CXX_FLAGS_RELEASE
  • VCPKG_C_FLAGS
  • VCPKG_C_FLAGS_DEBUG
  • VCPKG_C_FLAGS_RELEASE

如果您設定 VCPKG_CXX_FLAGS,您也必須設定 VCPKG_C_FLAGS,反之亦然。 組態特定旗標也是如此。 這些變數接受以空格分隔的編譯程式旗標字串:

set(VCPKG_CXX_FLAGS "/wd4996 -D_CRT_SECURE_NO_WARNINGS")
set(VCPKG_C_FLAGS "/wd4996 -D_CRT_SECURE_NO_WARNINGS")

VCPKG_LINKER_FLAGS

設定在缺少 VCPKG_CHAINLOAD_TOOLCHAIN_FILE的情況下建置動態連結庫和可執行檔時要使用的其他連結器旗標。

這個選項也有組態特定旗標的表單:

  • VCPKG_LINKER_FLAGS
  • VCPKG_LINKER_FLAGS_DEBUG
  • VCPKG_LINKER_FLAGS_RELEASE

VCPKG_MESON_CONFIGURE_OPTIONS

設定附加至 configure 命令的其他 Meson 設定選項(在 中 vcpkg_configure_meson)。

這是選用欄位。

也可作為組建類型特定 VCPKG_MESON_CONFIGURE_OPTIONS_DEBUGVCPKG_MESON_CONFIGURE_OPTIONS_RELEASE 變數使用。

VCPKG_MESON_NATIVE_FILE_RELEASE

提供額外的組態相依檔案作為 meson 交叉/原生檔案。 可用來覆寫 vcpkg 所提供的設定,因為它會在傳遞 vcpkg 產生的跨/原生檔案之後傳遞。

特別適合用來提供您自己的build_machine和host_machine專案。

VCPKG_MESON_NATIVE_FILE_DEBUG

請參閱 VCPKG_MESON_NATIVE_FILE_RELEASE

VCPKG_MESON_CROSS_FILE_RELEASE

請參閱 VCPKG_MESON_NATIVE_FILE_RELEASE

VCPKG_MESON_CROSS_FILE_DEBUG

請參閱 VCPKG_MESON_NATIVE_FILE_RELEASE

VCPKG_CMAKE_CONFIGURE_OPTIONS

設定附加至 configure 命令的其他 CMake 設定選項(在 中 vcpkg_cmake_configure)。

這是選用欄位。

也可作為組建類型特定 VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUGVCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE 變數使用。

VCPKG_CONFIGURE_MAKE_OPTIONS

設定附加至 configure 命令的其他 automake/autoconf 設定選項(在 中 vcpkg_configure_make)。

這是選用欄位。

例如,若要略過可能不正確地失敗的特定 libtool 檢查:

set(VCPKG_CONFIGURE_MAKE_OPTIONS "lt_cv_deplibs_check_method=pass_all")

也可作為組建類型特定 VCPKG_CONFIGURE_MAKE_OPTIONS_DEBUGVCPKG_CONFIGURE_MAKE_OPTIONS_RELEASE 變數使用。

VCPKG_HASH_ADDITIONAL_FILES

要包含在封裝 ABI 哈希計算中的檔案清單。

這是選用欄位。

宣告任何影響封裝內容的檔案,並且應該納入ABI 哈希的計算。 例如:

  • 自定義三胞胎和工具鏈中包含 (透過 include(filepath)) 的檔案。
  • 中定義的檔案 VCPKG_MESON_(NATIVE|CROSS)_FILE_<CONFIG>

只會考慮檔案的內容和順序,檔案的路徑不會影響ABI 哈希。

set(VCPKG_HASH_ADDITIONAL_FILES
  "${CMAKE_CURRENT_LIST_DIR}/file1.cmake"
  "${CMAKE_CURRENT_LIST_DIR}/meson-cross.txt"
)

VCPKG_POST_PORTFILE_INCLUDES

執行 portfile.cmake 之後要包含的 CMake 檔案清單。

這是選用欄位。

檔案的內容和順序會用於 ABI 哈希,檔案的路徑不會影響 ABI 哈希。

set(VCPKG_POST_PORTFILE_INCLUDES
  "${CMAKE_CURRENT_LIST_DIR}/file1.cmake"
  "${CMAKE_CURRENT_LIST_DIR}/file2.cmake"
)

VCPKG_DEP_INFO_OVERRIDE_VARS

注意

本節涵蓋 vcpkg 的實驗功能,隨時可能會變更或移除。

取代三重項「支援」字詞的預設計算清單。

此選項 (如果 set) 會覆寫平台 表示式 評估所使用的預設字詞集。

如需詳細資訊, "supports" 請參閱指令清單檔案欄位檔。

注意

此清單是透過協助程式函式擷 vcpkg_get_dep_info 取。

VCPKG_DISABLE_COMPILER_TRACKING

警告

不建議啟用此選項,因為它可能會導致還原的二進位套件與 ABI 不相容。 若要深入瞭解,請參閱二進位快取檔

當此選項設定為 TRUEON1時,編譯程式將不會追蹤為套件 abis 的一部分。

這會導致 二進位快取 重複使用來自較舊或較新編譯程序的組建。

Windows 特定變數

VCPKG_ENV_PASSTHROUGH

指示 vcpkg 允許其他環境變數進入建置程式。

在 Windows 上,vcpkg 會在與目前命令提示字元隔離的特殊全新環境中建置套件,以確保建置可靠性和一致性。 這個三重選項可以設定為將新增至全新環境的其他環境變數清單。 這些環境變數的值會哈希至套件 abi -- 傳遞不含 abi 追蹤的環境變數,請參閱 VCPKG_ENV_PASSTHROUGH_UNTRACKED

vcpkg env 請參閱 命令,以瞭解如何檢查將使用的精確環境。

注意

此清單是透過協助程式函式擷 vcpkg_get_tags 取。

VCPKG_ENV_PASSTHROUGH_UNTRACKED

指示 vcpkg 允許其他環境變數進入建置程式,而不需追蹤 abi。

請參閱 VCPKG_ENV_PASSTHROUGH

VCPKG_VISUAL_STUDIO_PATH

指定要使用的 Visual Studio 安裝。

若要選取 Visual Studio 實例和工具組版本的精確組合,我們會逐步解說下列演算法:

  1. 從 triplet 或環境變數 VCPKG_VISUAL_STUDIO_PATH判斷 的設定VCPKG_VISUAL_STUDIO_PATH,或將其視為未設定
  2. 從三重判斷 的設定 VCPKG_PLATFORM_TOOLSET ,或將其視為未設定
  3. 收集所有配對的Visual Studio實例清單,其中包含這些實例中所有可用的工具組
    • 這會先依實例類型排序(穩定、發行前版本、舊版),然後依工具組版本排序 (v143, v142, v141, v140)
  4. 根據和VCPKG_PLATFORM_TOOLSETVCPKG_VISUAL_STUDIO_PATH設定篩選清單。
  5. 選取最佳剩餘選項

路徑應該是絕對路徑,使用反斜杠格式化,而且沒有尾端斜線:

set(VCPKG_VISUAL_STUDIO_PATH "C:\\Program Files (x86)\\Microsoft Visual Studio\\Preview\\Community")

VCPKG_PLATFORM_TOOLSET

指定要使用的Visual Studio型 C/C++編譯程式工具鏈。

如需完整的選取演算法,請參閱 VCPKG_VISUAL_STUDIO_PATH

有效設定:

  • Visual Studio 2022 平臺工具組是 v143
  • Visual Studio 2019 平臺工具組是 v142
  • Visual Studio 2017 平臺工具組是 v141
  • Visual Studio 2015 平臺工具組是 v140

VCPKG_PLATFORM_TOOLSET_VERSION

指定要使用的詳細 MSVC C/C++編譯程式工具鏈。

根據預設, VCPKG_PLATFORM_TOOLSET 一律會選擇所選工具組最新安裝的次要版本。 如果您需要更多粒度,您可以使用此變數。 您可以指定部分或完整版本號碼。 有效值為 ,例如 14.2514.27.29110

VCPKG_LOAD_VCVARS_ENV

判斷 vcpkg 是否會在三重環境中搜尋及使用 Visual Studio 的實例。

根據預設,這是 ON 針對未指定 VCPKG_CHAINLOAD_TOOLCHAIN_FILE的 Windows 三胞胎。 針對指定 VCPKG_CHAINLOAD_TOOLCHAIN_FILE的非 Windows 三胞胎和三胞胎,這會預設為 OFF

Linux 變數

VCPKG_FIXUP_ELF_RPATH

當此選項設定為 (true|1|on), vcpkg 會將 和 $ORIGIN/<path_relative_to_lib> 新增$ORIGINRUNPATH可執行檔和共用連結庫的標頭。 這可讓套件重新放置於Linux上。

MacOS 變數

VCPKG_INSTALL_NAME_DIR

設定建置 macOS 動態連結庫時所使用的安裝名稱。 預設值為 @rpath。 如需詳細資訊,請參閱 CMake 檔以取得 CMAKE_INSTALL_NAME_DIR

VCPKG_FIXUP_MACHO_RPATH

使用相對安裝名稱和執行路徑,確保 vcpkg 所建置的 Mach-O 二進位檔可重新配置。

設定為 ON時:

  • 將共享連結庫二進位檔的絕對 LC_LC_ID_DYLIB 欄位修改為 @rpath/<library> ;
  • 將絕對 LC_RPATH 欄位修改為可執行檔和共享連結庫二進位檔的相對 @loader_path/<relative/path/to/library> 欄位。

重要

當 是 TRUEVCPKG_TARGET_IS_OSX,預設會啟用此功能。 若要停用,請在三重檔案明確設定VCPKG_FIXUP_MACHO_RPATHOFF

如需macOS上動態連結庫的詳細資訊,請參閱下列連結:

VCPKG_OSX_DEPLOYMENT_TARGET

設定已編譯二進位檔的最低 macOS 版本。 這也會變更macOS平臺SDK CMake將搜尋的版本。 如需詳細資訊,請參閱 CMake 檔以 取得CMAKE_OSX_DEPLOYMENT_TARGET

VCPKG_OSX_SYSROOT

設定 CMake 將使用之 macOS 平臺 SDK 的名稱或路徑。 如需詳細資訊,請參閱 CMake 檔以 取得CMAKE_OSX_SYSROOT

VCPKG_OSX_ARCHITECTURES

設定 CMake 將使用的 macOS /iOS 目標架構。 如需詳細資訊,請參閱 CMake 檔以取得CMAKE_OSX_ARCHITECTURES。

個別埠自定義

解譯三重檔案時,將會設定 CMake 變數 PORT 。 它可用來根據每個埠變更設定(例如 VCPKG_LIBRARY_LINKAGE)。

範例:

set(VCPKG_LIBRARY_LINKAGE static)
if(PORT MATCHES "qt5-")
    set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()

這會將所有 qt5-* 埠建置為動態連結庫,但所有其他埠都是靜態庫。

如需實際專案中的範例,請參閱 https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake