2017-10-12 8 views
0

Im Moment baue ich ein RPM namens firstrpm mit der folgenden CMakeLists.txt Datei. Ich erweiterte die Spezifikationsdatei, um ein Unterpaket mit der %package Direktive zu haben, und jetzt möchte ich die CMakeLists erweitern, um zwei RPMs zu bilden (sagen wir firstrpm und secondrpm). Wie kann ich es erweitern, um auch das zweite RPM mit einem anderen Paketnamen mit einem einzigen Build erstellen zu können?Wie macht man zwei verschiedene RPMs mit einem Build?

set(CPACK_PACKAGE_RELEASE_VERSION ${PROJECT_VERSION_RELEASE}) 
set(CPACK_PACKAGE_MINOR_VERSION ${PROJECT_VERSION_MINOR}) 
set(CPACK_PACKAGE_SERVICE_PACK ${PROJECT_VERSION_SERVICE_PACK}) 
set(CPACK_PACKAGE_BUILD ${PROJECT_VERSION_BUILD}) 
set(CPACK_SPEC_FILE_DIR ${CMAKE_CURRENT_BINARY_DIR})  
set(CPACK_GENERATOR "RPM") 
set(CPACK_PACKAGE_NAME "firstrpm") 
set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}) 
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_RELEASE_VERSION}.${CPACK_PACKAGE_MINOR_VERSION}.${CPACK_PACKAGE_SERVICE_PACK}-${CPACK_PACKAGE_BUILD}.${CMAKE_SYSTEM_PROCESSOR}") 

configure_file("${CMAKE_CURRENT_SOURCE_DIR}/${CPACK_PACKAGE_NAME}.spec.in" "${CPACK_SPEC_FILE_DIR}/${CPACK_PACKAGE_NAME}.spec" @ONLY IMMEDIATE) 
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/${CPACK_PACKAGE_NAME}-devel.spec.in" "${CPACK_SPEC_FILE_DIR}/${CPACK_PACKAGE_NAME}-devel.spec" @ONLY IMMEDIATE) 
set(CPACK_RPM_USER_BINARY_SPECFILE "${CPACK_SPEC_FILE_DIR}/${CPACK_PACKAGE_NAME}.spec") 

set(CPACK_TEMPORARY_PACKAGE_FILE_NAME "${CMAKE_BINARY_DIR}/_CPack_Packages/Linux/RPM/RPMS/${CMAKE_SYSTEM_PROCESSOR}/${CPACK_PACKAGE_FILE_NAME}.rpm") 
include(CPack) 
+0

Mögliches Duplikat von [Generiere zwei verschiedene Pakete mit CPack in cmake: Linux] (https://stackoverflow.com/questions/28671524/generate-two-different-package-using-cpack-in-cmake-linux) –

Antwort

0

Zweites Binärpaket aus einem Quellpaket heißt "Unterpaket". Sie fügen Ihrer Spezifikationsdatei (oder spec.in) nur ein paar Zeilen hinzu. Siehe:

http://ftp.rpm.org/max-rpm/s1-rpm-subpack-spec-file-changes.html

Und Sie nicht manuell -devel subpackage erstellen. Es wird automatisch erstellt, wenn Sie "BuildArch: noarch" nicht angeben.

+0

Ich bin diesem Tutorial bereits gefolgt, um ein Unterpaket zu erstellen, und die beiden RPMs werden erstellt, indem manuell rpmbuild ausgeführt wird. (Erklärung in dieser klareren Frage, die ich für das gleiche Problem gemacht habe: https://stackoverflow.com/questions/46727419/how-to-build-subpackages-defined-in-spec-files-using-cpack). Ich würde das gleiche mit CPACK machen, da die obige CMake-Datei mit einem Paket verwendet wird. – ThanksBye

Verwandte Themen