我有一个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_MAJOR
,CPACK_PACKAGE_VERSION_MINOR
和CPACK_PACKAGE_VERSION_PATCH
变量(也许是内部CPACK_PACKAGE_VERSION
变量),用于设置所有生成的包的版本。
有没有办法设置每个组件的软件包版本,例如通过设置一些变量与其他CPACK_COMPONENT_<COMPONENT>_*
或CPACK_DEBIAN_<COMPONENT>_*
变量类似?
答案 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中。