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"

# 验证代理是否生效(不用重启终端)
Invoke-WebRequest -Uri "https://www.google.com" -Proxy $env:HTTP_PROXY -TimeoutSec 10

# 清除代理设置
$env:HTTP_PROXY = $null
$env:HTTPS_PROXY = $null

永久设置代理(对所有会话有效)

# 设置HTTP和HTTPS代理
[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://127.0.0.1:11819", "User")
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://127.0.0.1:11819", "User")

# 验证代理是否生效(!!!要重启终端)
Invoke-WebRequest -Uri "https://www.google.com" -TimeoutSec 10

# 清除代理设置
[Environment]::SetEnvironmentVariable("HTTP_PROXY", $null, "User")
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", $null, "User")

使用Invoke-WebRequest测试代理时 注意:

  • PowerShell 5.1 网络请求默认依赖系统代理设置,对HTTP_PROXY 支持有限,需要显式配置成参数-Proxy $env:HTTP_PROXY
  • PowerShell 7.0+ 全面支持通过HTTP_PROXYHTTPS_PROXY等环境变量,不用显式配置成参数。
  • 获取Powershell版本$PSVersionTable.PSVersion
    在这里插入图片描述

(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-win
	x64-windows                   # 动态库(debug+release)
	x64-windows-release           # 动态库(releas)
	x64-windows-static            # 静态库(debug+release)
	x64-windows-static-release    # 静态库(releas)
	x64-windows-static-md         # 静态库(debug+release、动态运行时库)
	x64-windows-static-md-release # 静态库(release、动态运行时库)
Triplet 名称库链接方式运行时库链接构建类型
x64-windows动态 (DLL)动态 (/MD)Debug + Release
x64-windows-release动态 (DLL)动态 (/MD)Release Only
x64-windows-static静态 (LIB)静态 (/MT)Debug + Release
x64-windows-static-release静态 (LIB)静态 (/MT)Release Only
x64-windows-static-md静态 (LIB)动态 (/MD)Debug + Release
x64-windows-static-md-release静态 (LIB)动态 (/MD)Release Only

(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支持 导出的格式

​​格式参数​​说明
–raw未压缩的目录格式
–zipZIP压缩包格式
–7zip7z压缩包格式
–nugetIFW安装器格式(试验性)
–ifw未压缩的目录格式
–prefabAndroid Prefab格式(试验性)

(2)导出库

列出已安装的库:

# 我只导出jsoncpp,这里用findstr进行过滤
PS D:\Download\tp> vcpkg.exe list |findstr jsoncpp
jsoncpp:x64-windows                               1.9.6               JsonCpp is a C++ library that allows manipulatin...
jsoncpp:x64-windows-release                       1.9.6               JsonCpp is a C++ library that allows manipulatin...
jsoncpp:x64-windows-static                        1.9.6               JsonCpp is a C++ library that allows manipulatin...

导出库:

# 导出的库在vcpkg的安装目录下。
vcpkg.exe export jsoncpp:x64-windows --raw

# 导出的库在D:\export目录下
vcpkg.exe export jsoncpp:x64-windows --raw --output-dir=D:\export

# 导出的库在D:\export目录下,而且目录名称为mylib
 vcpkg.exe export jsoncpp:x64-windows --raw --output-dir=D:\export --output=mylib

2.3 安装指定版本的库

vcpkg目前还不支持命令行直接指定版本的功能,推荐使用vcpkg.jsonoverrides字段管理版本(这个方法可以在项目中使用 且不用导出库,使用方便)

(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-idvcpkg如果是解压安装的 是无法获取
    • 获取commit-idgit -C D:\Program\Vcpkg\vcpkg rev-parse HEAD
  • dependencies:只需要填写库名称即可。
  • version:库主版本号
  • port-version: vcpkg端口版本号

(3)编译安装库

vcpkg.exe install --triplet x64-windows  --x-install-root=.\3rdparty

注意:--x-install-root 是指定库的安装目录,最终库的目录是:3rdparty\x64-windows

指定版本的库已安装成功:

2.4 指定编译器

当系统有多个版本的编译器时,如安装VS2017和VS2019,vcpkg是用那个编译器编译的呢?答案是VS2019,因为vcpkg默认使用最新版本的编译器编译,如果要使用VS2017,则需要配置环境变量。

(1) 默认行为

  • Windows 系统vcpkg 默认使用最新安装的 Visual Studio 的 MSVC 编译器
  • Linux/macOS:默认使用系统默认的 GCC 或 Clang

(2)通过设置环境变量指定编译器

MSVC编译器:

$env:VCPKG_VISUAL_STUDIO_PATH = "D:\Program\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

参考文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值