protot/3rdparty/fcl/CMakeModules/FCLMacros.cmake

47 lines
1.9 KiB
CMake

#===============================================================================
# Appends items to a cached list.
# Usage:
# fcl_append_to_cached_string(_string _cacheDesc [items...])
#===============================================================================
macro(fcl_append_to_cached_string _string _cacheDesc)
foreach(newItem ${ARGN})
set(${_string} "${${_string}}${newItem}" CACHE INTERNAL ${_cacheDesc} FORCE)
endforeach()
endmacro()
#===============================================================================
# Get list of file names give list of full paths.
# Usage:
# fcl_get_filename_components(_var _cacheDesc [items...])
#===============================================================================
macro(fcl_get_filename_components _var _cacheDesc _prefix_to_remove)
set(${_var} "" CACHE INTERNAL ${_cacheDesc} FORCE)
string(LENGTH ${_prefix_to_remove} prefix_length)
foreach(header ${ARGN})
string(LENGTH ${header} full_length)
math(EXPR relative_path_length "${full_length} - ${prefix_length}")
string(SUBSTRING ${header} ${prefix_length} ${relative_path_length} header)
if(NOT ${header} MATCHES "/detail/" AND NOT ${header} MATCHES "-inl.h")
fcl_append_to_cached_string(
${_var}
${_cacheDesc}"_HEADER_NAMES"
"${header}\;")
endif()
endforeach()
endmacro()
#===============================================================================
# Generate header file list to a cached list.
# Usage:
# fcl_generate_include_header_list(_var _target_dir _cacheDesc [headers...])
#===============================================================================
macro(fcl_generate_include_header_list _var _target_dir _cacheDesc)
set(${_var} "" CACHE INTERNAL ${_cacheDesc} FORCE)
foreach(header ${ARGN})
fcl_append_to_cached_string(
${_var}
${_cacheDesc}"_HEADERS"
"#include \"${_target_dir}${header}\"\n")
endforeach()
endmacro()