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模式。

Manifest 使用示例 - Msbuild 工程

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模式下,此目录根据清单文件创建并赋值

上一篇:Roslyn在多开发框架让msbuild的Target仅运行一次


下一篇:VSCode的OmniSharp加载Unity项目时,出现[fail]: OmniSharp.MSBuild.ProjectLoader