Vcpkg踩坑实录

安装 port 历史版本

如何在 Vcpkg 命令行模式下安装 port 时如何指定版本。

截至 2023-05-22:vcpkg 仅支持在 manifest 模式下指定 port 的版本,在命令行模式下不支持指定 port 版本。

使用 Git 命令查看当前 Vcpkg 仓库的 baseline:

1
git rev-parse HEAD

创建vcpkg_json目录,并在该目录下创建vcpkg.json文件(以 openssl 为例):

1
2
3
4
5
6
7
8
9
10
11
{
"name": "cc",
"version": "1.0.1",
"builtin-baseline": "7b30311f0a79d395bf2d933d82fec1853c6a4e77",
"dependencies": [
{"name": "openssl"}
],
"overrides": [
{ "name": "openssl", "version-string": "1.1.1n#1" }
]
}

使用如下命令安装:

1
vcpkg install --triplet "x64-windows" "--x-manifest-root=D:\vcpkg_json\\" "--x-install-root=D:CODE\vcpkg\installed\\"

访问 Github 私有仓库

Vcpkg 默认只支持从公共代码仓库进行下载编译,本文介绍如何使用 Vcpkg 从私有仓库进行源码下载/编译/安装。

在 Github 中添加 TOKEN

添加 Windows 环境变量:

VCPKG_KEEP_ENV_VARS值为GITHUB_TOKEN

GITHUB_TOKEN值为第一步生成的 TOKEN

修改 portfile.cmake

vcpkg\ports目录下,找到对应库的 portfile.cmake 文件,加入AUTHORIZATION_TOKEN参数。

1
2
3
4
5
6
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO xxx/xxx
HEAD_REF main
AUTHORIZATION_TOKEN $ENV{GITHUB_TOKEN}
)

使用仓库的最新代码

在向 Vcpkg 提交 port 时,我们会不断地对仓库进行修改和调试。如果采用REF方式指定源码版本,则需要不断地修改 REF 和 SHA512,调试起来比较繁琐,我们可以采用HEAD_REF的方式来简化调试流程。

portfile.cmake文件中指定HEAD_REF,如:

1
2
3
4
5
6
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO winsoft666/ashe
HEAD_REF main
AUTHORIZATION_TOKEN $ENV{GITHUB_TOKEN}
)

安装时指定--head参数:

1
vcpkg install ashe:x64-windows-static --head