我正试图弄清楚如何配置我的清单文件,以使用vcpkg的新清单功能编译我的库的静态版本。我当前的清单文件是:
{
"name": "myProject",
"version-string": "v0.1",
],
"dependencies": [
{
"name": "curl",
"features" : [
"openssl"
],
"platform" : "(windows & x64 & static)"
}
]
}
,但这导致没有安装。选项"platform" : "windows"
安装为x86-windows
三元组,但我不能找出x64-windows-static
的正确参数。
我也很好奇——有没有一种方法可以为所有库声明一个三元组,而不是让每个库都成为一个JSON对象并具体列出它?
作为vcpkg
新发布的特性,manifest
实际上正在开发中。你可以参考微软博客关于manifest。
此外,还提供了Github上的manifest
示例供参考。
下面是一个已经存在的端口控制文件被重写为vcpkg的例子。json文件:
Source: pango
Version: 1.40.11-6
Homepage: https://ftp.gnome.org/pub/GNOME/sources/pango/
Description: Text and font handling library.
Build-Depends: glib, gettext, cairo, fontconfig, freetype, harfbuzz[glib] (!(windows&static)&!osx)
{
"name": "pango",
"version-string": "1.40.11",
"port-version": 6,
"homepage": "https://ftp.gnome.org/pub/GNOME/sources/pango/",
"description": "Text and font handling library.",
"dependencies": [
"glib",
"gettext",
"cairo",
"fontconfig",
"freetype",
{
"name": "harfbuzz",
"features": [ "glib" ],
"platform": "!(windows & static) & !osx"
}
]
}
最后,关于为所有库声明一个三元组的问题,欢迎将这个问题提交给Microsoft DC。
您误解了清单模式。
{
"name": "myProject",
"version-string": "v0.1",
],
"dependencies": [
{
"name": "curl",
"features" : [
"openssl"
],
"platform" : "(windows & x64 & static)"
}
]
}
上面的代码意味着只有在使用三元组x64-windows-static时才需要这个库。
你所要做的就是在配置你的项目时指定正确的三元组。
例如CMake项目。在第一个project()
指令之前设置变量VCPKG_TARGET_TRIPLET
为x64-windows-static
:
set(VCPKG_TARGET_TRIPLET x64-windows-static)
project ("myProject")
更多信息,请参考buildsystems.