CPack: требуется соответствие версии пакета для компонентов - PullRequest
0 голосов
/ 28 августа 2018

У меня есть проект с несколькими компонентами. Некоторые из этих компонентов зависят друг от друга. 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)

Когда я запускаю rpm -qpR на test-project2.rpm, я получаю

project1.so()(64bit)

Когда я хочу

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

Я попытался добавить следующее в CMakeLists.txt проекта2, но это не сработало

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

...