From adc964d83b482aebb6bfbbdad5fa371a7d36fde4 Mon Sep 17 00:00:00 2001 From: juanlofer-eprosima <88179026+juanlofer-eprosima@users.noreply.github.com> Date: Fri, 23 Jun 2023 11:15:41 +0200 Subject: [PATCH] Parametrize headers location and installation paths (#70) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan López Fernández --- cmake_utils/README.md | 2 ++ cmake_utils/cmake/compilation/compile_library.cmake | 4 ++-- .../cmake/project/load_project_settings.cmake | 12 ++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cmake_utils/README.md b/cmake_utils/README.md index 81f32639..c351134d 100644 --- a/cmake_utils/README.md +++ b/cmake_utils/README.md @@ -66,6 +66,8 @@ Those variables which default is `x` must be set, and those with `-` are not req | MODULE_SUMMARY | ${MODULE_NAME_LARGE} | Summary (short description) | | MODULE_DESCRIPTION | ${MODULE_SUMMARY} | Description | | MODULE_MACRO | TOUPPER ${MODULE_NAME} | Macro to use in CMake and C++ definitions (it is recommended to leave it as Uppercase of name) | +| MODULE_HEADERS_PATH | ${MODULE_NAME} | Path (relative to include) where headers to be installed are located | +| MODULE_HEADERS_INSTALL_PATH | ${MODULE_HEADERS_PATH} | Path (relative to install dir) where headers are installed | |------------------------------|-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------| | MODULE_FIND_PACKAGES | - | Modules that require to be found by find_package | | MODULE_THIRDPARTY_HEADERONLY | - | Headeronly thirdparties that require to be included (must be inside ${MODULE_THIRDPARTY_PATH} dir) | diff --git a/cmake_utils/cmake/compilation/compile_library.cmake b/cmake_utils/cmake/compilation/compile_library.cmake index 6fbf4c5e..455b5126 100644 --- a/cmake_utils/cmake/compilation/compile_library.cmake +++ b/cmake_utils/cmake/compilation/compile_library.cmake @@ -158,7 +158,7 @@ function(compile_library _SOURCE_PATH _INCLUDE_PATH) # Packaging ############################################################################### # Install headers - install(DIRECTORY ${_INCLUDE_PATH}/${MODULE_NAME} + install(DIRECTORY ${_INCLUDE_PATH}/${MODULE_HEADERS_PATH} DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT headers FILES_MATCHING @@ -174,7 +174,7 @@ function(compile_library _SOURCE_PATH _INCLUDE_PATH) ${PROJECT_BINARY_DIR}/include/${MODULE_NAME}/library/eProsima_auto_link.h ${PROJECT_BINARY_DIR}/include/${MODULE_NAME}/library/library_dll.h DESTINATION - ${INCLUDE_INSTALL_DIR}/${MODULE_NAME}/library + ${INCLUDE_INSTALL_DIR}/${MODULE_HEADERS_INSTALL_PATH}/library COMPONENT headers ) diff --git a/cmake_utils/cmake/project/load_project_settings.cmake b/cmake_utils/cmake/project/load_project_settings.cmake index 0960342d..51dd89ea 100644 --- a/cmake_utils/cmake/project/load_project_settings.cmake +++ b/cmake_utils/cmake/project/load_project_settings.cmake @@ -33,6 +33,8 @@ # - MODULE_NAME_LARGE : Project large name (default MODULE_NAME) # - MODULE_DESCRIPTION : Project description (default MODULE_SUMMARY) # - MODULE_MACRO : String to set macros in project (default MODULE_NAME in UPPERCASE) +# - MODULE_HEADERS_PATH : Path (relative to include) where headers to be installed are located (default MODULE_NAME) +# - MODULE_HEADERS_INSTALL_PATH : Path (relative to install dir) where headers are installed (default MODULE_HEADERS_PATH) # # TODO # @@ -121,6 +123,16 @@ macro(load_project_settings) set (MODULE_LICENSE_FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../LICENSE") endif() + # Set MODULE_HEADERS_PATH + if (NOT MODULE_HEADERS_PATH) + set (MODULE_HEADERS_PATH ${MODULE_NAME}) + endif() + + # Set MODULE_HEADERS_INSTALL_PATH + if (NOT MODULE_HEADERS_INSTALL_PATH) + set (MODULE_HEADERS_INSTALL_PATH ${MODULE_HEADERS_PATH}) + endif() + ##### # Module external options