我在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"
属性)。是否有理由将它们包含在项目清单中,而不是仅包含端口?
1条答案
按热度按时间bqucvtff1#
是否有理由将它们包括在项目清单中,而不是仅包括端口?
保持端口中的清单与项目清单同步。理论上,您可以简单地将清单从项目拖放到一个端口中,编写一个小的端口文件,然后就可以完成了。如果没有版本字段,您需要添加它。
如果您提交了vcpkg清单,则可以使用
string(JSON)
并从清单中读取版本,然后将其提供给project
命令