CPack:要求组件的软件包版本匹配

时间:2018-08-28 19:28:41

标签: cmake rpm cpack

我有一个包含多个组件的项目。其中一些组件相互依赖。 CPack会根据RPM中的要求自动设置链接库,但未指定版本。有没有办法让CPack将所需软件包的软件包版本设置为当前正在构建的软件包的版本(和发行版)。

我的基本CMakeLists.txt看起来像

cmake_minimum_required(VERSION 3.0)
set(CPACK_PACKAGE_NAME "test")
set(CPACK_PACKAGE_VERSION 1.0)
set(CPACK_RPM_PACKAGE_RELEASE 1)
set(CPACK_GENERATOR "RPM")
set(CPACK_COMPONENT_INSTALL ON)
set(CPACK_RPM_COMPONENT_INSTALL ON)

add_subdirectory(project1)
add_subdirectory(project2)

project1 CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(project1 VERSION 1.0.0 LANGUAGES CXX)

add_library(project1 SHARED src/test.cpp src/test.h)

install(TARGETS project1 COMPONENT project1)

export(PACKAGE project1)
cpack_add_component(project1)

project2 CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(project2 VERSION 1.0.0 LANGUAGES CXX)

add_library(project2 SHARED src/test2.cpp src/test2.h)

target_link_libraries(project2 PUBLIC project1)

install(TARGETS project2 COMPONENT project2)

export(PACKAGE project2)
cpack_add_component(project2)

当我在test-project2.rpm上运行rpm -qpR时,我得到

project1.so()(64bit)

我想要的时候

project1.so()(64bit) >= 1.0.1

我尝试将以下内容添加到project2的CMakeLists.txt中,但没有用

set(CPACK_RPM_project2_REQUIRES "project1 >= $CPACK_PACKAGE_VERSION.$CPACK_RPM_PACKAGE_RELEASE")

将其添加到基本CMakeList.txt中确实有效

set(CPACK_RPM_project2_REQUIRES "test_project1 >= $CPACK_PACKAGE_VERSION-$CPACK_RPM_PACKAGE_RELEASE")

但是我更希望将所有project2的详细信息保留在project2 CMakeLists.txt中

0 个答案:

没有答案