cpack: Fix CPACK_PACKAGING_INSTALL_PREFIX handling for archives (#14677)
Fix the case when the archive generator is used to package components with an install prefix.
This commit is contained in:
parent
51b4321e5f
commit
e3f84fc504
|
@ -63,6 +63,14 @@ int cmCPackArchiveGenerator::addOneComponentToArchive(cmArchiveWrite& archive,
|
|||
filePrefix = this->GetOption("CPACK_PACKAGE_FILE_NAME");
|
||||
filePrefix += "/";
|
||||
}
|
||||
const char* installPrefix =
|
||||
this->GetOption("CPACK_PACKAGING_INSTALL_PREFIX");
|
||||
if(installPrefix && installPrefix[0] == '/' && installPrefix[1] != 0)
|
||||
{
|
||||
// add to file prefix and remove the leading '/'
|
||||
filePrefix += installPrefix+1;
|
||||
filePrefix += "/";
|
||||
}
|
||||
std::vector<std::string>::const_iterator fileIt;
|
||||
for (fileIt = component->Files.begin(); fileIt != component->Files.end();
|
||||
++fileIt )
|
||||
|
|
|
@ -862,6 +862,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
|
|||
set(CTEST_RUN_CPackComponents ${CTEST_TEST_CPACK})
|
||||
set(CTEST_package_X11_TEST ${CTEST_TEST_CPACK})
|
||||
set(CTEST_RUN_CPackComponentsForAll ${CTEST_TEST_CPACK})
|
||||
set(CTEST_RUN_CPackComponentsPrefix ${CTEST_TEST_CPACK})
|
||||
|
||||
# Do not try to build RPM
|
||||
if (NOT RPMBUILD_EXECUTABLE)
|
||||
|
@ -1035,6 +1036,33 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
|
|||
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackTestAllGenerators")
|
||||
endif()
|
||||
|
||||
if(CTEST_RUN_CPackComponentsPrefix)
|
||||
set(CPackComponents_BUILD_OPTIONS)
|
||||
if(APPLE)
|
||||
set(CPackComponents_BUILD_OPTIONS -DCPACK_BINARY_DRAGNDROP:BOOL=ON)
|
||||
endif()
|
||||
if(NOT NSIS_MAKENSIS_EXECUTABLE)
|
||||
set(CPackComponents_BUILD_OPTIONS ${CPackComponents_BUILD_OPTIONS}
|
||||
-DCPACK_BINARY_NSIS:BOOL=OFF)
|
||||
endif()
|
||||
|
||||
add_test(CPackComponentsPrefix ${CMAKE_CTEST_COMMAND}
|
||||
--build-and-test
|
||||
"${CMake_SOURCE_DIR}/Tests/CPackComponentsPrefix"
|
||||
"${CMake_BINARY_DIR}/Tests/CPackComponentsPrefix"
|
||||
${build_generator_args}
|
||||
--build-project CPackComponentsPrefix
|
||||
--build-two-config
|
||||
--build-target package
|
||||
--build-options ${build_options}
|
||||
-DCPACK_BINARY_DEB:BOOL=${CPACK_BINARY_DEB}
|
||||
-DCPACK_BINARY_RPM:BOOL=${CPACK_BINARY_RPM}
|
||||
-DCPACK_BINARY_ZIP:BOOL=ON
|
||||
${CPackComponents_BUILD_OPTIONS}
|
||||
)
|
||||
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackComponentsPrefix")
|
||||
endif()
|
||||
|
||||
if(CTEST_package_X11_TEST)
|
||||
set(X11_build_target_arg --build-target package)
|
||||
else()
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
cmake_minimum_required(VERSION 3.2)
|
||||
project(CPackComponentsPrefix NONE)
|
||||
|
||||
install(FILES file-runtime.txt
|
||||
DESTINATION bin COMPONENT Runtime)
|
||||
install(FILES file-development.txt
|
||||
DESTINATION lib COMPONENT Development)
|
||||
|
||||
set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY 1)
|
||||
set(CPACK_COMPONENTS_ALL Development)
|
||||
set(CPACK_ARCHIVE_COMPONENT_INSTALL 1)
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/My-1.0")
|
||||
include(CPack)
|
|
@ -0,0 +1 @@
|
|||
This file is installed with the Development component.
|
|
@ -0,0 +1 @@
|
|||
This file is installed with the Runtime component.
|
Loading…
Reference in New Issue