diff options
Diffstat (limited to 'modules/ECMGenerateHeaders.cmake')
-rw-r--r-- | modules/ECMGenerateHeaders.cmake | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/modules/ECMGenerateHeaders.cmake b/modules/ECMGenerateHeaders.cmake index 963e13b9..7fac1649 100644 --- a/modules/ECMGenerateHeaders.cmake +++ b/modules/ECMGenerateHeaders.cmake @@ -12,7 +12,8 @@ # # ECM_GENERATE_HEADERS( ClassA ClassB ... # [MODULE_NAME name] -# [OUTPUT_DIR path]) +# [OUTPUT_DIR path] +# [REQUIRED_HEADERS variable]) # # The MODULE_NAME argument is used to provide information about where the # directories will be generated. By default, PROJECT_NAME will be used in both @@ -22,6 +23,13 @@ # should be within the build directory. By default, CMAKE_CURRENT_BINARY_DIR # will be used. # +# The REQUIRED_HEADERS argument will receive an output variable name where all +# the required headers will be appended so that they can be installed together +# with the generated ones. +# +# The RELATIVE argument will specify where are the original headers from the +# current directory. +# # # Copyright (c) 2013, Aleix Pol Gonzalez <aleixpol@blue-systems.com> # @@ -32,7 +40,7 @@ include(CMakeParseArguments) function(ECM_GENERATE_HEADERS) - set(oneValueArgs MODULE_NAME OUTPUT_DIR) + set(oneValueArgs MODULE_NAME OUTPUT_DIR REQUIRED_HEADERS RELATIVE) cmake_parse_arguments(EGH "" "${oneValueArgs}" "" ${ARGN}) if(NOT EGH_MODULE_NAME) set(EGH_MODULE_NAME ${PROJECT_NAME}) @@ -47,7 +55,7 @@ function(ECM_GENERATE_HEADERS) string(TOLOWER ${_CLASSNAME} lowercaseclassname) set(REGULAR_HEADER_NAME ${EGH_OUTPUT_DIR}/${lowercasemodule}/${lowercaseclassname}.h) set(FANCY_HEADER_NAME ${EGH_OUTPUT_DIR}/${EGH_MODULE_NAME}/${_CLASSNAME}) - set(_actualheader "${CMAKE_CURRENT_SOURCE_DIR}/${lowercaseclassname}.h") + set(_actualheader "${CMAKE_CURRENT_SOURCE_DIR}/${EGH_RELATIVE}/${lowercaseclassname}.h") if (NOT EXISTS ${_actualheader}) message(FATAL_ERROR "Could not find \"${_actualheader}\"") endif() @@ -57,5 +65,9 @@ function(ECM_GENERATE_HEADERS) if (NOT EXISTS ${FANCY_HEADER_NAME}) file(WRITE ${FANCY_HEADER_NAME} "#include \"${lowercasemodule}/${lowercaseclassname}.h\"\n") endif() + list(APPEND REQUIRED_HEADERS "${_actualheader}") endforeach() + if (NOT EGH_REQUIRED_HEADERS STREQUAL "") + set(${EGH_REQUIRED_HEADERS} ${${EGH_REQUIRED_HEADERS}} ${REQUIRED_HEADERS} PARENT_SCOPE) + endif () endfunction() |