vcpkg 的官方教程网页

https://learn.microsoft.com/zh-cn/vcpkg/get_started/get-started?pivots=shell-powershell

vcpkg 的两种使用模式

  1. 经典模式,通过依次输入命令 vcpkg install 你需要的库 一个一个手动下载库文件。
  2. 清单模式,vcpkg 会读取当前路径下 vcpkg.json 中的配置自动下载库文件。

vcpkg 的使用方法

现代 vcpkg 更推荐使用清单模式,所以本文仅介绍清单模式的使用方式

  1. 根据教程下载和安装 vcpkg,国内可以从 https://gitee.com/JackBoosY/vcpkg.git 网址下载 vcpkg。
  2. 在当前计算机中添加环境变量 VCPKG_DOWNLOAD_MIRROR,用于加速 vcpkg 下载库文件。(有效性未知)
    VCPKG_DOWNLOAD_MIRROR = "https://bgithub.xyz"
    
  3. 创建 cmake 项目,编辑文件 CMakeLists.txt 在函数 project() 之前,加入下面这句话:
    set(CMAKE_TOOLCHAIN_FILE "C:/Program Files/Microsoft Visual Studio/18/Community/VC/vcpkg/scripts/buildsystems/vcpkg.cmake") 
    
    cmake 构建时会自动调用 vcpkg 安装 vcpkg.json 中所声明的库文件,其中C:/Program Files/Microsoft Visual Studio/18/Community/VC/vcpkg/scripts/buildsystems/vcpkg.cmake要替换成你的 vcpkg.cmake 的路径。
  4. CMakeLists.txt 的同级目录下, 添加文件 vcpkg.jsonvcpkg-configuration.json
  5. 可以通过修改文件 vcpkg.json 添加所需要的库文件。

文件 vcpkg.json 用途

用于管理 vcpkg 的依赖,vcpkg 会读取该文件,自动下载属性 dependencies 中的添加的库文件,如果没有属性 builtin-baseline 的话需要额外添加文件 vcpkg-configuration.json
不使用文件vcpkg-configuration.json 下,典型的 vcpkg.json 文件内容:

{
  "name": "your-project-name",
  "version": "1.0.0",
  "dependencies": [
    "fmt",
    "fftw3"
  ],
  "builtin-baseline": "544a4c5c297e60e4ac4a5a1810df66748d908869"
}

使用文件vcpkg-configuration.json 下,典型的 vcpkg.json 文件内容:

{
  "name": "your-project-name",
  "version": "1.0.0",
  "dependencies": [
    "fmt",
    "fftw3"
  ]
}

文件 vcpkg-configuration.json 用来解决 vcpkg 获取注册表信息慢的问题

如果 vcpkg 出现下面选项,获取信息很慢的话,可以在和 vcpkg.json 文件同级目录下新增文件 vcpkg-configuration.json

Fetching registry information from https://github.com/microsoft/vcpkg (HEAD)...

添加下面内容,注意属性 baseline 中的值决定了 vcpkg.json 所安装的库文件版本。因为 vcpkg 会根据该信息查找 vcpkg 仓库的文件夹 ports ,而文件夹 ports 存储了库文件的版本及描述信息,baseline 则决定了使用哪次 commit 。
典型的 vcpkg-configuration.json 文件内容

{
    "default-registry": null,
    "registries": [
        {
            "kind": "git",
            "repository": "https://gitee.com/JackBoosY/vcpkg.git",
            "baseline": "4497409a47f19db373a410a0efb84eca4747adbf",
            "packages": [
                "*"
            ]
        }
    ]
}

属性 baselinebuiltin-baseline 的作用

属性 baselinebuiltin-baseline 中的值决定了 vcpkg.json 所安装的库文件版本。因为 vcpkg 会使用该提交对象哈希值确定 vcpkg 使用哪次 commit,文件夹 ports 存储了库文件的版本及描述信息,不同 commit 的文件夹 ports 中的内容会发生改变。

文件 vcpkg.json 和 vcpkg-configuration.json 中的 baselinebuiltin-baseline 的值是什么?

baselinebuiltin-baseline 实际上就是 git commit 时产生的 40 位提交对象哈希值

如何获取属性 baselinebuiltin-baseline 最新的值

方法1. 删除文件 vcpkg.json 中的属性 builtin-baseline 和文件 vcpkg-configuration.json,输入命令vcpkg --add-initial-baseline x-update-baseline 添加初始值,再次输入命令 vcpkg x-update-baseline 可以获取罪行获取提交对象哈希值。
方法2.如果是 gitee 的话,浏览器访问 https://gitee.com/JackBoosY/vcpkg.git, 按照图中所示就可以获取的最新的提交对象哈希值。
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐