vcpkg 有两种运行模式:经典模式和清单模式。清单文件有自己的
vcpkg_installed
目录,可在其中安装依赖项,与所有包都安装在通用%VCPKG_ROOT%/installed
目录中的经典模式不同。 因此,每个项目都可以有自己的清单和自己的一组依赖项,这些依赖项不会与其他项目的依赖项发生冲突。
1. 创建包含清单的项目
#include <iostream>
#include <sqlite3.h>
int main() {
sqlite3 *db;
int exit = 0;
exit = sqlite3_open("test.db", &db);
if (exit) {
std::cerr << "Can't open database: " << sqlite3_errmsg(db) << std::endl;
} else {
std::cout << "Opened database successfully!" << std::endl;
}
sqlite3_close(db);
return 0;
}
2. 添加依赖项
2.1 在项目路径打开命令行工具
依次点击 工具 -> 命令行 -> 开发者 PowerShell 。
2.2 创建清单文件
vcpkg new --application
2.3 添加依赖项
vcpkg add port fmt
vcpkg add port sqlite3
默认 vcpkg-configuration.json
文件引入了基线约束,指定项目应使用的依赖项的最低版本。
3. 手动安装依赖项
只需在包含清单文件的目录中运行 vcpkg install。
该命令完成后,所有生成的包都将出现在 vcpkg_installed
目录中。
vcpkg install
4. 构建项目(可选)
默认情况下,Visual Studio 项目中禁用清单模式。 要启用清单,请在解决方案资源管理器中右键单击项目,选择属性,选择左侧的 vcpkg 选项卡,然后将 Use Vcpkg Manifest
设置为是。
补充:
1.)已存在清单
error: D:\SynologyDrive\Workstation\Demo\SQLiteDemo\vcpkg.json 下已存在清单。
原因:已经存在 vcpkg.json 文件。
解决:删除 vcpkg.json 文件。
2.)不支持单个包参数
error: 在清单模式下,`vcpkg install` 不支持单个包参数。
要安装其他包,请编辑 vcpkg.json,然后在没有任何包参数的情况下运行 `vcpkg install`。
有关详细信息,请参阅 https://learn.microsoft.com/vcpkg/users/manifests。
原因:使用vcpkg install 时, 多加参数。如: vcpkg install sqlite3 。
解决:在清单模式下,直接使用 vcpkg install 。
3.)MSB3073错误
严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息
错误 MSB3073 命令“"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\vcpkg\vcpkg.exe" install --x-wait-for-lock --triplet "x64-windows" --vcpkg-root "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\vcpkg\\" "--x-manifest-root=D:\SynologyDrive\Workstation\Demo\SQLiteDemo\\" "--x-install-root=D:\SynologyDrive\Workstation\Demo\SQLiteDemo\vcpkg_installed\x64-windows\\" ”已退出,代码为 1。 SQLiteDemo C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\vcpkg\scripts\buildsystems\msbuild\vcpkg.targets 183
严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息
错误 MSB3073 命令“"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\vcpkg\vcpkg.exe" install --x-wait-for-lock --triplet "x64-windows" --vcpkg-root "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\vcpkg\\" "--x-manifest-root=D:\SynologyDrive\Workstation\Demo\SQLiteDemo\\" "--x-install-root=D:\SynologyDrive\Workstation\Demo\SQLiteDemo\vcpkg_installed\x64-windows\\" ”已退出,代码为 1。 SQLiteDemo C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\vcpkg\scripts\buildsystems\msbuild\vcpkg.targets 183
原因:没有足够的权限、已经存在 vcpkg_installed
目录或清单文件配置错误。
解决:删除 vcpkg_installed
目录,以管理员身份运行 Visual Studio,重新生成解决方案。
4.)添加环境变量
设置 VCPKG_ROOT
将告知 vcpkg 实例所在的位置。添加到 PATH
直接从 shell 运行 vcpkg 命令。