我有一个包含多个组件的项目。其中一些组件相互依赖。 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中