CPack:如何为组件指定不同的包版本?

时间:2017-07-06 14:20:54

标签: cmake packaging cpack

我有一个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>_*变量类似?

1 个答案:

答案 0 :(得分:0)

目前我认为这不可能,但是我创建了提供此功能的合并请求(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中。