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