VCPKG中有許多的環境變量,如何通過修改環境變量來實現期望的構建結果,可以參照下面的例子:
1. 指定特定的工具集
當一台機器上同時安裝了多個版本的Visual Studio 或是一個Visual Studio安裝了多個版本的工具集時,vcpkg會默認調用最新的工具集,若想使用舊的工具集,可通過修改指定triplet文件來實現:
例如要在x64-windows triplet下使用VS2017的工具集,可以添加如下內容到 triplets/x64-windows.cmake文件中:
set(VCPKG_PLATFORM_TOOLSET v141)
2. 添加額外的編譯選項
可以通過在對應port的portfile.cmake文件中添加如下內容來添加額外的編譯選項:
set(VCPKG_CXX_FLAGS "/arch:SSE2 ${VCPKG_CXX_FLAGS}")
set(VCPKG_C_FLAGS "/arch:SSE2 ${VCPKG_C_FLAGS}")
注意:如果您手動設置了VCPKG_CXX_FLAGS,那么您必須同時設置VCPKG_C_FLAGS。
下面是vcpkg提供的其他的環境變量的一些介紹:
變量名稱 |
功能 |
變量的值 / 擴展介紹 |
VCPKG_TARGET_ARCHITECTURE |
指定生成庫對應的目標機器的架構 |
x86/x64/arm/arm64/wasm32 |
VCPKG_CRT_LINKAGE |
指定生成庫時使用的MSVC CRT 鏈接方式(/MT /MD) |
dynamic/static |
VCPKG_LIBRARY_LINKAGE |
指定生成庫的類型 |
dynamic/static |
VCPKG_CMAKE_SYSTEM_NAME |
指定目標平台類型 |
Empty(Windows Desktop for legacy reasons) WindowsStore(Universal Windows Platform) MinGW(Minimalist GNU for Windows) Darwin(Mac OSX) iOS(iOS) Linux(Linux) Emscripten(WebAssembly) |
VCPKG_CMAKE_SYSTEM_VERSION |
指定目標平台的版本 |
可選變量 |
VCPKG_CHAINLOAD_TOOLCHAIN_FILE |
指定要使用的備用 CMake toolchain文件 |
|
VCPKG_CXX_FLAGS |
設置額外的編譯選項 |
此選項還具有特定於配置和 C 標志的形式: VCPKG_CXX_FLAGS VCPKG_CXX_FLAGS_DEBUG VCPKG_CXX_FLAGS_RELEASE
VCPKG_C_FLAGS VCPKG_C_FLAGS_DEBUG VCPKG_C_FLAGS_RELEASE |
VCPKG_LINKER_FLAGS |
設置額外的鏈接選項 |
此選項還具有用於配置特定標志的形式: VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_DEBUG VCPKG_LINKER_FLAGS_RELEASE |
VCPKG_CMAKE_CONFIGURE_OPTIONS |
設置額外的CMake 配置選項 |
可選變量 |
VCPKG_MAKE_CONFIGURE_OPTIONS |
設置額外的automake/autoconf 配置選項 |
可選變量 |
VCPKG_DEP_INFO_OVERRIDE_VARS |
設置覆蓋默認triplet文件中的設置選項 |
|
Windows 變量名稱 |
功能 |
變量的值 / 擴展介紹 |
VCPKG_ENV_PASSTHROUGH |
指示 vcpkg 允許參加構建過程的額外環境變量 |
在 Windows 上,vcpkg 在與當前命令提示符隔離的特殊干凈環境中構建第三方庫,以確保構建的可靠性和一致性。此選項可以將額外的環境變量添加到干凈環境中的附加環境變量列表,這些環境變量以及它們的哈希值都會記錄在VCPKG abi 文件中 |
VCPKG_ENV_PASSTHROUGH_UNTRACKED |
指示vcpkg 允許額外的環境變量進入構建過程,但不會被abi 記錄 |
|
VCPKG_VISUAL_STUDIO_PATH |
指定使用的Visual Studio的路徑 |
|
VCPKG_PLATFORM_TOOLSET |
指定要使用的基於 VS 的 C/C++ 編譯器工具集 |
v140/v141/v142 |
VCPKG_LOAD_VCVARS_ENV |
設置這個變量可解決當使用VCPKG_CHAINLOAD_TOOLCHAIN_FILE但不向該變量賦值時,vcpkg不設置VS環境變量的問題 |
TRUE/FALSE |
MacOS 變量名稱 |
功能 |
變量的值 / 擴展介紹 |
VCPKG_OSX_DEPLOYMENT_TARGET |
設置編譯二進制文件的最低 macOS 版本。這也會更改 CMake 將搜索的 macOS 平台 SDK 的版本 |
|
VCPKG_OSX_SYSROOT |
設置 CMake 將使用的 macOS 平台 SDK 的名稱或路徑 |
|
VCPKG_OSX_ARCHITECTURES |
設置 CMake 將使用的 macOS / IOS 目標架構 |
|
參考:https://github.com/microsoft/vcpkg/blob/master/docs/users/triplets.md