cmake vcpkg清单版本有什么用?

owfi6suc  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(200)

我在CMake项目中使用VS2022和vcpkg集成,在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"属性)。是否有理由将它们包含在项目清单中,而不是仅包含端口?

bqucvtff

bqucvtff1#

是否有理由将它们包括在项目清单中,而不是仅包括端口?
保持端口中的清单与项目清单同步。理论上,您可以简单地将清单从项目拖放到一个端口中,编写一个小的端口文件,然后就可以完成了。如果没有版本字段,您需要添加它。
如果您提交了vcpkg清单,则可以使用string(JSON)并从清单中读取版本,然后将其提供给project命令

相关问题