2017-10-12 2 views
0

현재 나는 다음과 같은 CMakeLists.txt 파일을 사용하여 firstrpm이라는 RPM을 구축 중입니다. spec 파일을 확장하여 %package 지시어로 서브 패키지를 만들었고 이제는 두 개의 RPM (firstrpm과 secondrpm)을 만들기 위해 CMakeLists를 확장하고 싶습니다. 다른 패키지 이름과 함께 하나의 빌드로 두 번째 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) 
+0

[cmake에서 CPack을 사용하여 두 개의 다른 패키지 생성 : Linux] (https://stackoverflow.com/questions/28671524/generate-two-different-package-using-cpack-in-cmake-linux) –

답변

0

원본 패키지의 두 번째 바이너리 패키지를 "하위 패키지"라고합니다. spec 파일 (또는 spec.in)에 몇 줄을 추가합니다. 참조 :

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

그리고 수동 -devel 서브 패키지를 만들 수 없습니다. "BuildArch : noarch"를 지정하지 않으면 자동으로 생성됩니다.

+0

나는 이미 튜토리얼을 따라 서브 패키지를 만들고, 두 RPM은 수동으로 rpmbuild를 실행하여 생성했다. (동일한 문제에 대한이 명확한 질문에 대한 설명 : https://stackoverflow.com/questions/46727419/how-to-build-subpackages-defined-in-spec-files-using-cpack). 위의 CMake 파일이 하나의 패키지에 사용 된 것이라면 CPACK을 사용하여 동일하게하고 싶습니다. – ThanksBye

관련 문제