diff --git a/CMakeLists.txt b/CMakeLists.txt index 70b629f..d9821f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,6 +54,10 @@ option(OPTION_BUILD_TESTS "Build tests." option(OPTION_BUILD_DOCS "Build documentation." OFF) option(OPTION_BUILD_EXAMPLES "Build examples." OFF) +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(OPTION_DEPLOY_DESTDIR "" CACHE STRING "Emulates the DESTDIR convention of make install.") +endif() + # # Declare project diff --git a/deploy/packages/pack-template.cmake b/deploy/packages/pack-template.cmake index 22639b1..6e059a2 100644 --- a/deploy/packages/pack-template.cmake +++ b/deploy/packages/pack-template.cmake @@ -247,6 +247,18 @@ add_custom_target( ) set_target_properties(pack-${project_name} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1) +# Create per-component install targets +if(OPTION_DEPLOY_DESTDIR AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux") + foreach(component ${CPACK_COMPONENTS_ALL}) + add_custom_target( + destdir-deploy-${component} + COMMAND make preinstall + COMMAND DESTDIR=${OPTION_DEPLOY_DESTDIR} ${CMAKE_COMMAND} -DCOMPONENT=${component} -P cmake_install.cmake + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) + endforeach() +endif() + # Set dependencies add_dependencies(pack pack-${project_name}) if(MSVC)