vcpkg 与 CMake 集成的步骤
1. vcpkg 的基本功能
- 包管理 :
vcpkg
提供了大量开源库的预编译版本(支持 Windows、Linux 和 macOS)。 - 自动配置 CMake :
vcpkg
提供了一个工具链文件(vcpkg.cmake
),可以无缝集成到 CMake 中。 - 跨平台支持 :通过
vcpkg
安装的库可以在不同平台上使用,而无需手动处理依赖。
2. vcpkg 与 CMake 集成的步骤
(1) 安装 vcpkg
首先需要安装 vcpkg
。以下是安装步骤:
# 克隆 vcpkg 仓库
git clone https://github.com/microsoft/vcpkg.git
# 进入 vcpkg 目录
cd vcpkg
# 在 Linux/macOS 上运行引导脚本
./bootstrap-vcpkg.sh
# 在 Windows 上运行引导脚本
.\bootstrap-vcpkg.bat
安装完成后,你会得到一个可执行的 vcpkg
工具。
(2) 使用 vcpkg 安装库
通过 vcpkg
安装所需的库。例如,安装 libidn2
:
./vcpkg install libidn2
如果你需要特定平台的版本(如 x64 或 arm64),可以指定目标架构:
./vcpkg install libidn2:x64-linux
./vcpkg install libidn2:x64-windows
(3) 集成 vcpkg 到 CMake
vcpkg
提供了一个工具链文件(vcpkg.cmake
),可以直接传递给 CMake,从而让 CMake 自动找到通过 vcpkg
安装的库。
方法 1:直接在命令行中指定工具链文件
运行 CMake 时,通过 -DCMAKE_TOOLCHAIN_FILE
参数指定 vcpkg
的工具链文件路径。例如:
cmake -B build -S . \
-DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
注意window下一般在scripts\buildsystems目录下找vcpkg.cmake文件,linux估计也是一样的吧
方法 2:设置环境变量
为了避免每次都要指定工具链文件,可以将 CMAKE_TOOLCHAIN_FILE
设置为环境变量:
export CMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
然后直接运行 CMake:
cmake -B build -S .
vcpkg install
命令可以选择安装的目标架构(位数)、编译类型(静态或动态)以及安装的版本(Release 或 Debug),下面为你详细介绍如何操作。
选择安装的位数(目标架构)
vcpkg
支持多种目标架构,包括 x86
、x64
等。你可以通过指定 --triplet
参数来选择不同的目标架构。
常见的架构三元组
x86-windows
:32 位 Windows 架构。x64-windows
:64 位 Windows 架构。arm64-windows
:ARM64 位 Windows 架构。
示例
- 安装 32 位版本的
zlib
:
vcpkg install zlib --triplet x86-windows
- 安装 64 位版本的
zlib
:
vcpkg install zlib --triplet x64-windows
选择编译的类型(静态,动态)
你可以通过修改 vcpkg
的配置文件或者使用 --feature
参数来选择静态库或动态库的编译方式。
使用配置文件
在 vcpkg
根目录下的 vcpkg.json
文件中,可以添加或修改 "builtin-baseline"
字段之后的 "overrides"
字段,来指定默认的库类型。
{
"name": "my-project",
"version-string": "0.1.0",
"builtin-baseline": "abc123",
"overrides": [
{
"name": "zlib",
"features": [
"static"
]
}
]
}
上述配置指定 zlib
以静态库方式编译。如果要使用动态库,则将 "static"
改为 "shared"
。
在安装时直接指定特征。
- 安装静态版本的
zlib
:在 Windows 系统上,若要使用
x64
架构并安装静态版本的库,可以使用x64-windows-static
vcpkg install zlib --triplet x64-windows-static
这种方式会让
vcpkg
为指定的库使用静态编译配置。 - 选择 Release 或 Debug 版本
vcpkg
默认安装 Release 版本的库,但你可以同时安装 Release 和 Debug 版本,或者只安装 Debug 版本。
同时安装 Release 和 Debug 版本
vcpkg install zlib --triplet x64-windows --debug
只安装 Debug 版本
vcpkg install zlib --triplet x64-windows --only-debug
综上所述,vcpkg install
命令提供了丰富的选项,让你可以灵活地选择安装的目标架构、编译类型和版本。