【发布时间】: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_MAJOR、CPACK_PACKAGE_VERSION_MINOR 和CPACK_PACKAGE_VERSION_PATCH 变量(可能还有内部CPACK_PACKAGE_VERSION 变量) ,它为所有生成的包设置版本。
有没有办法为每个组件设置包版本,例如通过设置类似于其他CPACK_COMPONENT_<COMPONENT>_* 或CPACK_DEBIAN_<COMPONENT>_* 变量的一些变量?
【问题讨论】: