2017-10-12 4 views
0

現時点では、次のCMakeLists.txtファイルを使用してfirstrpmというRPMを構築しています。私は%packageディレクティブでサブパッケージを持つようにspecファイルを拡張しましたが、今はCMakeListsを拡張して2つのRPM(firstrpmとsecondrpm)を作っていきたいと思います。別のパッケージ名で1つのビルドで2番目のRPMも作成できるようにするには、どのように拡張できますか?1つのビルドで2つの異なる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) 
+0

[cmakeでCPackを使用して2つの異なるパッケージを生成する:Linux](https://stackoverflow.com/questions/28671524/generate-two-different-package-using-cpack-in-cmake-linux) –

答えて

0

ソースパッケージの2番目のバイナリパッケージを「サブパッケージ」といいます。スペックファイル(またはspec.in)に、さらにいくつかの行を追加します。参照:

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

そして、あなたは手動で-develサブパッケージを作成しないでください。 "BuildArch:noarch"を指定しない限り、自動的に作成されます。

+0

私はすでにこのチュートリアルに従ってサブパッケージを作成しており、2つのRPMは手動でrpmbuildを実行することによって作成されます。 (同じ問題について私が作ったこのより明確な質問の説明:https://stackoverflow.com/questions/46727419/how-to-build-subpackages-defined-in-spec-files-using-cpack)。上記のCMakeファイルが1つのパッケージで使用されていることを前提に、私はCPACKを使って同じことをしたいと思います。 – ThanksBye

関連する問題