From 36b2498dd6a1fc06f197da9da0b5933b96172499 Mon Sep 17 00:00:00 2001 From: Martchus Date: Thu, 20 Jul 2017 01:43:10 +0200 Subject: [PATCH] Allow disabling install targets Might be useful if install targets cause problems, eg. under MacOS --- cmake/modules/AppTarget.cmake | 2 +- cmake/modules/BasicConfig.cmake | 34 +++++++++++++++++++---------- cmake/modules/Doxygen.cmake | 18 ++++++++------- cmake/modules/LibraryTarget.cmake | 2 +- cmake/modules/ShellCompletion.cmake | 16 ++++++++------ 5 files changed, 43 insertions(+), 29 deletions(-) diff --git a/cmake/modules/AppTarget.cmake b/cmake/modules/AppTarget.cmake index 7571ece..ea3c47b 100644 --- a/cmake/modules/AppTarget.cmake +++ b/cmake/modules/AppTarget.cmake @@ -65,7 +65,7 @@ set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} PROPE AUTOGEN_TARGET_DEPENDS "${AUTOGEN_DEPS}" ) -if(NOT META_NO_INSTALL_TARGETS) +if(NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) # add install target for binary install(TARGETS ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} RUNTIME DESTINATION bin diff --git a/cmake/modules/BasicConfig.cmake b/cmake/modules/BasicConfig.cmake index 8250860..1373881 100644 --- a/cmake/modules/BasicConfig.cmake +++ b/cmake/modules/BasicConfig.cmake @@ -252,19 +252,29 @@ if(CLANG_SOURCE_BASED_COVERAGE_ENABLED) endif() endif() +# configure creation of install targets +if(NOT META_NO_INSTALL_TARGETS) + # install targets have not been disabled on project level + # check whether install targets are disabled by the user + # this might be useful since install targets seem to cause problems under MacOS + option(ENABLE_INSTALL_TARGETS "enables creation of install targets" ON) +endif() + # add install target for extra files -foreach(EXTRA_FILE ${EXTRA_FILES}) - get_filename_component(EXTRA_DIR ${EXTRA_FILE} DIRECTORY) - install( - FILES ${EXTRA_FILE} - DESTINATION "share/${META_PROJECT_NAME}/${EXTRA_DIR}" - COMPONENT extra-files - ) -endforeach() -if(NOT TARGET install-extra-files) - add_custom_target(install-extra-files - COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=extra-files -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" - ) +if(NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) + foreach(EXTRA_FILE ${EXTRA_FILES}) + get_filename_component(EXTRA_DIR ${EXTRA_FILE} DIRECTORY) + install( + FILES ${EXTRA_FILE} + DESTINATION "share/${META_PROJECT_NAME}/${EXTRA_DIR}" + COMPONENT extra-files + ) + endforeach() + if(NOT TARGET install-extra-files) + add_custom_target(install-extra-files + COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=extra-files -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + ) + endif() endif() set(BASIC_PROJECT_CONFIG_DONE YES) diff --git a/cmake/modules/Doxygen.cmake b/cmake/modules/Doxygen.cmake index 32746c9..9c74f58 100644 --- a/cmake/modules/Doxygen.cmake +++ b/cmake/modules/Doxygen.cmake @@ -61,15 +61,17 @@ if(NOT NO_DOXYGEN) add_dependencies(apidoc "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_apidoc") # add install target for API documentation - install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/api-doc" - DESTINATION "share/${META_PROJECT_NAME}" - COMPONENT api-doc - OPTIONAL - ) - if(NOT TARGET install-api-doc) - add_custom_target(install-api-doc - COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=api-doc -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + if(NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) + install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/api-doc" + DESTINATION "share/${META_PROJECT_NAME}" + COMPONENT api-doc + OPTIONAL ) + if(NOT TARGET install-api-doc) + add_custom_target(install-api-doc + COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=api-doc -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + ) + endif() endif() message(STATUS "Generating target for generating API documentation for ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} with Doxygen") diff --git a/cmake/modules/LibraryTarget.cmake b/cmake/modules/LibraryTarget.cmake index 2478a87..fc07ba1 100644 --- a/cmake/modules/LibraryTarget.cmake +++ b/cmake/modules/LibraryTarget.cmake @@ -305,7 +305,7 @@ configure_file( ) list(APPEND PC_FILES "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME_FOR_PC}.pc") -if(NOT META_NO_INSTALL_TARGETS) +if(NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) # add install target for the CMake config files install( FILES diff --git a/cmake/modules/ShellCompletion.cmake b/cmake/modules/ShellCompletion.cmake index fabc4e6..3242bde 100644 --- a/cmake/modules/ShellCompletion.cmake +++ b/cmake/modules/ShellCompletion.cmake @@ -20,14 +20,16 @@ if(SHELL_COMPLETION_ENABLED) ) # add install target bash completion - install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bash-completion/completions" - DESTINATION "share/bash-completion" - COMPONENT bash-completion - ) - if(NOT TARGET install-bash-completion) - add_custom_target(install-bash-completion - COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=bash-completion -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + if(NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) + install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bash-completion/completions" + DESTINATION "share/bash-completion" + COMPONENT bash-completion ) + if(NOT TARGET install-bash-completion) + add_custom_target(install-bash-completion + COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=bash-completion -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + ) + endif() endif() message(STATUS "Generating files for bash completion.")