2.4 vcpkg 使用
一、Vcpkg 入门
1.1 vcpkg 安装
(1) 设置powershell代理
官方推荐使用powershell
终端,为了方便代码下载,这里设置代理。
临时设置代理(仅当前对话有效)
# 设置HTTP和HTTPS代理(注意要带"$",不然会被认为是字符串)
$env:HTTP_PROXY = "http://127.0.0.1:11819"
$env:HTTPS_PROXY = "http://127.0.0.1:11819"# 清除代理设置
$env:HTTP_PROXY = $null
$env:HTTPS_PROXY = $null
(2)下载vcpkg源码并编译
# 下载源码
cd d:\
git clone https://github.com/microsoft/vcpkg# 编译
cd vcpkg
.\bootstrap-vcpkg.bat
编译好以后 会在同级目录下生成vcpkg.exe
文件
(3)配置环境变量(可选)
为了方便在其他地方使用vcpkg,将vcpkg路径添加到环境变量中。
1.2 vcpkg 常用命令
- 查找库:
\vcpkg.exe search jsoncpp
【查找jsoncpp库】 - 安装库:
.\vcpkg.exe install jsoncp
【会下载工具和源码,然后编译安装】 - 列出已安装的库:
.\vcpkg.exe list
- 导出库:
vcpkg export jsoncpp --7zip
【支持多种格式:–7zip –raw –nuget –ifw –zip】 - 卸载库:
.\vcpkg.exe remove jsoncpp
- 移除过时包:
.\vcpkg.exe remove --outdated
- 更新库:
vcpkg update xxx
二、Vcpkg 进阶使用
2.1 安装指定类型的库
我需要安装64位的动态库 应该怎样设置呢?vcpkg提供多种cmake配置文件(也叫三元组文件) 用来生成对应类型的库。
(1)查看有那些cmake配置:
# 这里用findstr进行了过滤,我只需要64位Windows的库。
PS D:\Program\Vcpkg\vcpkg> .\vcpkg.exe help triplet | findstr x64-winx64-windows-release # releas版本,默认是同时编译release和debug版本x64-windows-static-md # 静态库,且运行时库时是动态库x64-windows-static # 静态库,且运行时库是静态库x64-windows # 默认编译这个版本,动态库x64-windows-static-md-release # release版本的静态库(运行时库是动态库)x64-windows-static-release # release版本的静态库
(2)cmake配置文件的命名格式:<架构>-<平台>-<链接方式>
- 架构(
VCPKG_TARGET_ARCHITECTURE
):x64、x86、arm、arm64 - 平台(
VCPKG_CMAKE_SYSTEM_NAME
):Windows、Linux、Android、Darwin等 - 链接方式
- 编译类型(
VCPKG_BUILD_TYPE
):release、debug - 库类型(
VCPKG_LIBRARY_LINKAGE
): dynamic、static - 运行时库类型(
VCPKG_CRT_LINKAGE
):dynamic、static
- 编译类型(
(3)安装指定类型的库:
# 通过:<库名:配置类型>.\vcpkg.exe install jsoncpp:x64-windows-static# 通过--triplet选项指定配置类型.\vcpkg.exe install jsoncpp --triplet x64-windows-release
2.2 安装指定版本的库
(1)查看库有那些版本
查看库有那些版本:vcpkg.io
(2)创建目录和vcpkg.json文件
创建临时目录tmp:
在tmp目录下创建vcpkg.json文件:
{"builtin-baseline": "984f9232b2fe0eb94f5e9f161d6c632c581fff0c","dependencies": ["jsoncpp"],"overrides": [{"name": "jsoncpp","version": "1.9.5","port-version": 5}]
}
说明:
builtin-baseline
:是vcpkg的commit-id
,vcpkg如果是解压安装的 是无法获取。- 获取commit-id:
git -C D:\Program\Vcpkg\vcpkg rev-parse HEAD
- 获取commit-id:
dependencies
:只需要填写库名称即可。version
:库主版本号port-version
: vcpkg端口版本号
(3)编译安装库
vcpkg.exe install --triplet x64-windows --x-install-root=./3rdparty
指定版本的库已安装成功:
2.3 指定编译器
当系统有多个版本的编译器时使用,比如安装VS2017和VS2019,由于vcpkg默认使用最新版本的编译器,如果需要使用VS2017编译,则需要设置。
(1) 默认行为
- Windows 系统:vcpkg 默认使用最新安装的 Visual Studio 的 MSVC 编译器
- Linux/macOS:默认使用系统默认的 GCC 或 Clang
(2)通过设置环境变量指定编译器
MSVC编译器:
$env:VCPKG_VISUAL_STUDIO_PATH = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"
MinGW编译器:
$env:VCPKG_PLATFORM_TOOLSET = "MinGW" # 或者具体版本如 "MinGW-8.1.0"
$env:CC = "gcc.exe"
$env:CXX = "g++.exe"
(3)编译安装
vcpkg.exe install --triplet x64-windows --x-install-root=./3rdparty
参考文章:
- 利用Vcpkg轻松集成开源第三方库
- Vcpkg C/C++库管理工具安装和使用教程(链接VS2019)
- windows11环境包管理工具vcpkg配置和教程
- vcpkg 与 CMake 集成的步骤