vcpkg清单版本有什么用



我正在为CMake项目以清单模式使用带有vcpkg集成的VS2022。我已经在CMakeLists.txt中定义了一个版本,该版本被配置为头文件和资源文件:

cmake_minimum_required(VERSION 3.23)
project(clcto-lib VERSION 1.2.0.0)
# ...

要在清单模式下使用vcpkg,我还包括一个vcpkg.json:

{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
"name": "clcto-lib",
"version": "1.2.0.0",
"dependencies": [
"log4cxx"
]
}

现在,我必须在两个位置指定应该保持同步的版本。我希望避免这种情况,以便只指定一次版本。

在清单模式下,为什么必须指定版本?它是如何使用的?我将如何在CMakeLists.txt文件中或在配置时使用它?由于vcpkg清单是端口清单的一个良好开端,如果可能的话,我希望这是该版本的唯一真相来源。

经过进一步调查,清单文件似乎只使用"dependencies"(没有"name""version"属性(。是否有理由将它们包括在项目清单中,而不仅仅是港口?

是否有理由将它们包含在项目清单中,而不仅仅是端口?

保持端口中的清单与项目清单同步。理论上,这个想法是,你可以简单地将清单从你的项目中放入一个端口,写一个小的端口文件并完成它。如果没有版本字段,你需要添加它。

如果您提交了一个vcpkg清单,您可以使用string(JSON)并从清单中读取版本,并将其提供给project命令

最新更新