如何在一个版本中创建两个不同的RPM?
目前我正在使用以下CMakeLists.txt文件构建一个名为firstrpm的RPM。我扩展了spec文件,使其具有%package
指令的子包,现在我想扩展CMakeLists来创建两个rpms(比如说firstrpm和secondrpm)。我怎样才能扩展它,以便能够制作第二个具有不同软件包名称和单个构建的RPM?来自一个源包如何在一个版本中创建两个不同的RPM?
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)
第二二进制包被称为“子包”。您只需添加几行到您的spec文件(或spec.in)。请参阅:
http://ftp.rpm.org/max-rpm/s1-rpm-subpack-spec-file-changes.html
你不手动创建-devel子包。除非您指定“BuildArch:noarch”,否则它将自动创建。
我已经按照该教程创建了一个子包,并且通过手动执行rpmbuild创建了两个RPM。 (在这个更清晰的问题中我解释了同样的问题:https://stackoverflow.com/questions/46727419/how-to-build-subpackages-defined-in-spec-files-using-cpack)。我想用CPACK来做同样的事情,因为上面的CMake文件是一个包中使用的文件。 – ThanksBye
可能的重复[在cmake:Linux中使用CPack生成两个不同的包](https://stackoverflow.com/questions/28671524/generate-two-different-package-using-cpack-in-cmake-linux) –