【问题标题】:CPack: How to specify different package versions for components?CPack:如何为组件指定不同的包版本?
【发布时间】:2017-12-10 14:52:38
【问题描述】:

我有一个 CMake 项目来构建多个共享库和工具,其中大部分位于子目录下:

add_directory(libFirst)
add_directory(libSecond)
add_directory(myTool)
# etc...

install(TARGET "someTarget" COMPONENT "someTarget" ...) 规则位于各自的 subdirectory/CMakeLists.txt 文件中。

我想使用构建目录中的make package 命令为所有这些生成 Debian 软件包。我将CPACK_DEB_COMPONENT_INSTALL 设置为ON

我面临的问题是,并非所有目标都具有相同的VERSION 和/或SOVERSION。例如,libFirst 的版本为 1.0.0.0,libSecond 的版本为 4.3.0.0。这意味着生成的包也应该有不同的版本,但我发现指定版本的唯一方法是指定CPACK_PACKAGE_VERSION_MAJORCPACK_PACKAGE_VERSION_MINORCPACK_PACKAGE_VERSION_PATCH 变量(可能还有内部CPACK_PACKAGE_VERSION 变量) ,它为所有生成的包设置版本。

有没有办法为每个组件设置包版本,例如通过设置类似于其他CPACK_COMPONENT_<COMPONENT>_*CPACK_DEBIAN_<COMPONENT>_* 变量的一些变量?

【问题讨论】:

    标签: cmake packaging cpack


    【解决方案1】:

    我认为目前这不可能,但我创建了一个提供此功能的合并请求 (https://gitlab.kitware.com/cmake/cmake/merge_requests/2305)。

    我希望它会获得批准,但与此同时,您可以在本地更改您的 CPackDeb.cmake,如以下差异所示:https://gitlab.kitware.com/cmake/cmake/merge_requests/2305/diffs。该文件的默认位置在 /usr/share/cmake/Modules/CPackDeb.cmake。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 2010-11-16
      • 1970-01-01
      相关资源
      最近更新 更多