Manifest 使用示例 - Msbuild 工程
注意:在尝试以下示例之前,请先执行 './vcpkg integrate install' 集成命令。
1. 创建一个C++控制台程序,名称为test。
test.cpp:
#include <iostream>
#include <fstream>
#include <sstream>
#include <json/json.h>
#define JSON_PATH "../"
using namespace std;
int main()
{
ifstream fs;
string jsonPath = JSON_PATH;
jsonPath.append("vcpkg.json");
fs.open(jsonPath);
if (!fs.is_open())
return -1;
ostringstream ss;
ss << fs.rdbuf();
fs.close();
string rawJson = ss.str();
JSONCPP_STRING err;
Json::CharReaderBuilder builder;
const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
Json::Value root;
if (!reader->parse(rawJson.c_str(), rawJson.c_str() + static_cast<int>(rawJson.length()), &root, &err))
{
return -1;
}
if (root["name"].isString())
cout << "project name: " << root["name"].asString() << endl;
return 0;
}
在sln同级目录下创建清单文件 vcpkg.json 并填入以下代码:
vcpkg.json:
{
"name": "test",
"version-string": "0.0.1",
"dependencies": [
"jsoncpp"
]
}
2. 在项目 — 属性("Properties")— 配置属性("Configuration Properties")— vcpkg中将 "Use Vcpkg Manifest" 设置为 "Yes" 以启用manifest模式。
3. 编译项目并启动。输出为:
project name: test
当您的项目启动编译时,vcpkg会根据清单文件中的配置首先生成依赖项,并在您的项目编译完成后将依赖项自动复制至输出文件夹中。
注意:若您拥有多个项目且使用的triplet各不相同,请使用不同的清单文件声明依赖项。
选项描述
在Visual Studio GUI中(项目——属性("Properties")——配置属性("Configuration Properties")——vcpkg)更改以下选项或在公共的 .prop 文件中定义它们可修改使用vcpkg集成的选项:
选项 |
说明 |
VcpkgEnabled (Use Vcpkg) |
启用或禁用vcpkg集成功能。 |
VcpkgTriplet (Triplet) |
设置使用的triplet |
VcpkgHostTriplet (Host Triplet) |
设置使用的主机triplet。详情请参阅VCPKG_HOST_TRIPLET |
VcpkgAdditionalInstallOptions (Additional Options) |
设置manifest模式下额外的安装命令参数 |
VcpkgConfiguration (Vcpkg Configuration) |
设置使用依赖库对应当前项目配置选项的类型(Debug/Release) |
VcpkgEnableManifest (Use Vcpkg Manifest) |
设置启用manifest模式。若设置为"OFF",则即使检测到清单文件仍然会禁用manifest模式。该选项在将来会默认设置为"ON" |
VcpkgManifestInstall (Install Vcpkg Dependencies) |
需首先启用manifest模式,设置在manifest模式下自动安装依赖项到VcpkgInstalledDirectory中 |
VcpkgInstalledDirectory (Installed Directory) |
设置vcpkg生成的依赖项的头文件和库的安装位置。在manifest模式下,此目录根据清单文件创建并赋值 |