江苏安宜建设工程有限公司网站,免费的设计软件,网站建设概要设计,罗湖区网站建设多少钱文章目录 使用vcpkg管理依赖第三库vcpkg安装vcpkg经典模式使用从仓库列表搜索依赖项从某个基线版本的列表中查询某个依赖项信息安装依赖库 vcpkg清单模式的使用vcpkg清单模式的使用例子说明 使用vcpkg管理依赖第三库
vcpkg 有两种操作模式#xff1a;经典模式和清单模式。
在… 文章目录 使用vcpkg管理依赖第三库vcpkg安装vcpkg经典模式使用从仓库列表搜索依赖项从某个基线版本的列表中查询某个依赖项信息安装依赖库 vcpkg清单模式的使用vcpkg清单模式的使用例子说明 使用vcpkg管理依赖第三库
vcpkg 有两种操作模式经典模式和清单模式。
在经典模式下使用 vcpkg 作为命令行接口在vcpkg 安装目录中安装依赖项。 通常位于中 %VCPKG_ROOT%/installed其中 %VCPKG_ROOT% 是 vcpkg 的安装目录。
在清单模式下在新建项目文件夹在名为 vcpkg.json的清单文件中声明项目的直接依赖项。此模式下会根据清单文件生成项目自己的vcpkg_installed目录用于安装依赖项这与经典模式不同经典模式的所有包都安装在公共 %VCPKG_ROOT%/installed 目录中。 因此每个项目都可以有自己的清单和自己的一组不与其他项目的依赖项冲突的依赖项。 而且只有清单模式才能使用高级功能例如 版本控制 和 自定义注册表。 使用清单模式安装包这是大多数用户推荐的工作流。
vcpkg安装
找到vcpkg的github目录
克隆到本地目录 git clone https://github.com/Microsoft/vcpkg进入vcpkg目录启动安装 .\vcpkg\bootstrap-vcpkg.bat等待程序下载vcpkg.exe结束脚本运行完毕。
这里需要注意 1.必须用git下载vcpkg工作空间否则项目清单模式应用时为项目依赖库添加版本控制时命令‘vcpkg x-update-baseline --add-initial-baseline’无法为清单文件添加基线版本。 2.windows平台使用PowerShell工具且需要最新版本找到PowerShell的github官网下载安装。 vcpkg经典模式使用
从仓库列表搜索依赖项 vcpkg search zlib从某个基线版本的列表中查询某个依赖项信息 git show 2815578f4a3486cec24c9b07d17e18e03bbaf667:versions/baseline.json | egrep -A 3 -e zlib|fmt|curl注意 1.基线版本号就是vcpkg的github目录的提交记录的SHA哈希值。 2.egrep 是unix和linux中的命令故需要在git的命令行窗口来使用。 关于基线版本号如何获取 首先到vcpkg的github官网然后找到commits如下图所示 在commits页面选择需要的提交版本号的SHA哈希值
安装依赖库
# 默认安装vcpkg install curl
# 安装支持OpenSSL的curlinstall curl[openssl]
# 安装支持OpenSSL和LibSHH2的curlinstall curl[openssl,ssh]vcpkg清单模式的使用
vcpkg清单模式的使用例子说明
示例项目文件目录
hello
| -- build/ : 项目的CMake构建目录
| -- CMakeLists.txt : 项目的CMake文件
| -- main.cpp
L -- vcpkg.json : vcpkg的项目级管理清单文件main.cpp:
#include fmt/core.h
#include zlib.hint main()
{fmt::print(fmt version is {}\nzlib version is {}\n, FMT_VERSION, ZLIB_VERSION);return 0;
}CMakeLists.txt:
cmake_minimum_required(VERSION 3.18)project(versionstest CXX)add_executable(main main.cpp)find_package(ZLIB REQUIRED)
find_package(fmt CONFIG REQUIRED)
target_link_libraries(main PRIVATE ZLIB::ZLIB fmt::fmt)vcpkg.json:
{$schema: https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json,name: hello,version: 0.0.1,description: vcpkg study tutorial: hello,dependencies: [fmt,{name: zlib,platform: windows x64},{name: curl,platform: windows x64,version: 8.1.2,features: [ssh,{name: openssl,platform: windows x64}]}],builtin-baseline: 3426db05b996481ca31e95fff3734cf23e0f51bc,overrides: [{name: fmt,version: 10.1.1}]
}
构建流程
# %VCPKG_ROOT%表示VCPKG.exe所在的根目录cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake
# CMake构件编译系统后针对Visual Studio项目需要用软件打开sln解决方案编译说明 使用基线添加版本约束
# 针对vcpkg.json清单文件未添加builtin-baseline的情况在清单文件所在目录运行命令vcpkg x-update-baseline --add-initial-baseline使用基线添加版本约束的含义是基线确定了vcpkg的github仓库中各个库包的最低版本。
添加最低版本约束 基线不是锁定包版本的唯一方法。 vcpkg 还接受形式的 **version**最低版本约束。
dependencies: [fmt,{name: zlib,platform: windows x64},{name: curl,platform: windows x64,version: 8.1.2,...强制使用特定版本 在某些情况下可能需要强制使用特定版本的包例如
解决版本冲突。锁定早于基线的版本。锁定其他无法比拟的版本例如 vista、 xp。
...
overrides: [{name: fmt,version: 10.1.1}]
...关于使用基线添加版本约束、添加最低版本约束、强制使用特定版本三者的关系 见示例:
{dependencies: [{name: fmt,version: 10.1.1},zlib],builtin-baseline: 3426db05b996481ca31e95fff3734cf23e0f51bc, overrides: [{ name: zlib, version: 1.2.8}]
}3426db05b996481ca31e95fff3734cf23e0f51bc使用基线添加版本约束
fmt“version”: “7.1.3”zlib“version”:“1.2.11”
添加最低版本约束
fmt“version”: “10.1.1”
强制使用特定版本
zlib“version”:“1.2.8”
安装时fmt最终采用了添加最低版本约束zlib最终采用了强制使用特定版本。 说明强制使用特定版本有最高优先级使用基线添加版本约束比强制使用特定版本的版本低时使用强制使用特定版本。