| # Create files named 1 to 9 |
| foreach(i RANGE 1 9) |
| file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${i}.txt" "This is file ${i}") |
| endforeach() |
| |
| set(COMPONENT_NAMES c1 c2 c3 c4 c5) |
| foreach(j RANGE 1 5) |
| # Select 4 file and install to the component |
| math(EXPR COMPONENT_IDX "${j} - 1") |
| list(GET COMPONENT_NAMES "${COMPONENT_IDX}" SELECTED_COMPONENT) |
| math(EXPR END_FILE "${j} + 4") |
| foreach(k RANGE ${j} ${END_FILE}) |
| install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${k}.txt" DESTINATION "files" COMPONENT ${SELECTED_COMPONENT}) |
| endforeach() |
| endforeach() |
| |
| if(RunCMake_SUBTEST_SUFFIX STREQUAL "conflict_file") |
| file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conflict/1.txt" "This should create a conflict.") |
| install(FILES "${CMAKE_CURRENT_BINARY_DIR}/conflict/1.txt" DESTINATION "files" COMPONENT c2) |
| endif () |
| |
| # You cannot create symlink in Windows test environment. Instead mock the symlink. |
| if(NOT CMAKE_HOST_WIN32) |
| file(CREATE_LINK "${CMAKE_CURRENT_BINARY_DIR}/2.txt" "${CMAKE_CURRENT_BINARY_DIR}/symlink2" SYMBOLIC) |
| else() |
| file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/symlink2" "This is file 2") |
| endif() |
| install(FILES "${CMAKE_CURRENT_BINARY_DIR}/symlink2" DESTINATION "files" COMPONENT c1) |
| |
| if(RunCMake_SUBTEST_SUFFIX STREQUAL "conflict_symlink" AND NOT CMAKE_HOST_WIN32) |
| file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/conflict) |
| file(CREATE_LINK "${CMAKE_CURRENT_BINARY_DIR}/1.txt" "${CMAKE_CURRENT_BINARY_DIR}/conflict/symlink2" SYMBOLIC) |
| install(FILES "${CMAKE_CURRENT_BINARY_DIR}/conflict/symlink2" DESTINATION "files" COMPONENT c2) |
| elseif(RunCMake_SUBTEST_SUFFIX STREQUAL "conflict_symlink" AND CMAKE_HOST_WIN32) |
| file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conflict/symlink2" "This should create a conflict.") |
| install(FILES "${CMAKE_CURRENT_BINARY_DIR}/conflict/symlink2" DESTINATION "files" COMPONENT c2) |
| else() |
| install(FILES "${CMAKE_CURRENT_BINARY_DIR}/symlink2" DESTINATION "files" COMPONENT c2) |
| endif () |
| |
| |
| if(PACKAGING_TYPE STREQUAL "COMPONENT") |
| set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) |
| set(CPACK_COMPONENTS_ALL "c1;c2;c3;c4") |
| elseif(PACKAGING_TYPE STREQUAL "GROUP") |
| set(CPACK_COMPONENTS_ONE_PACKAGE_PER_GROUP ON) |
| set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) |
| include(CPackComponent) |
| |
| cpack_add_component_group(g1 DISPLAY_NAME "Group 1") |
| cpack_add_component_group(g2 DISPLAY_NAME "Group 2") |
| cpack_add_component(c1 |
| DISPLAY_NAME "Group 1" |
| DESCRIPTION "Component for Group 1" |
| GROUP g1 |
| ) |
| cpack_add_component(c2 |
| DISPLAY_NAME "Group 1" |
| DESCRIPTION "Component for Group 1" |
| GROUP g1 |
| ) |
| cpack_add_component(c3 |
| DISPLAY_NAME "Group 2" |
| DESCRIPTION "Component for Group 2" |
| GROUP g2 |
| ) |
| cpack_add_component(c4 |
| DISPLAY_NAME "Group 2" |
| DESCRIPTION "Component for Group 2" |
| GROUP g2 |
| ) |
| |
| set(CPACK_${GENERATOR_TYPE}_PACKAGE_GROUP g1 g2) |
| endif () |