| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | 
###MACRO(ctkMacroGetTargetLibraries varname)  SET(filepath ${CMAKE_CURRENT_SOURCE_DIR}/target_libraries.cmake)  # Check if "target_libraries.cmake" file exists  IF(NOT EXISTS ${filepath})    MESSAGE(FATAL_ERROR "${filepath} doesn't exists !")  ENDIF()  # Make sure the variable is cleared  SET(target_libraries )  # Let's make sure target_libraries contains only strings  FILE(STRINGS "${filepath}" stringtocheck) # read content of 'filepath' into 'stringtocheck'  STRING(REGEX MATCHALL "[^\\#]\\$\\{.*\\}" incorrect_elements ${stringtocheck})  FOREACH(incorrect_element ${incorrect_elements})    STRING(REGEX REPLACE "\\$|\\{|\\}" "" correct_element ${incorrect_element})    MESSAGE(FATAL_ERROR "In ${filepath}, ${incorrect_element} should be replaced by ${correct_element}")  ENDFOREACH()  INCLUDE(${filepath})  # Loop over all target library, if it does *NOT* start with "CTK",  # let's resolve the variable to access its content  FOREACH(target_library ${target_libraries})    IF(${target_library} MATCHES "^CTK[a-zA-Z0-9]+$")      LIST(APPEND ${varname} ${target_library})    ELSE()      LIST(APPEND ${varname} "${${target_library}}")    ENDIF()  ENDFOREACH()ENDMACRO()###MACRO(ctkMacroCollectTargetLibraryNames target_dir option_name varname)  #MESSAGE(STATUS option_name:${option_name})  IF(${${option_name}})    #MESSAGE(STATUS target:${target})    SET(lib_targets)    SET(filepath ${target_dir}/target_libraries.cmake)    #MESSAGE(STATUS filepath:${filepath})    # Check if "target_libraries.cmake" file exists    IF(NOT EXISTS ${filepath})      MESSAGE(FATAL_ERROR "${filepath} doesn't exists !")    ENDIF()    # Let's make sure target_libraries contains only strings    FILE(STRINGS "${filepath}" stringtocheck)    STRING(REGEX MATCHALL "[^#]\\$\\{.*\\}" incorrect_elements ${stringtocheck})    FOREACH(incorrect_element ${incorrect_elements})      STRING(REGEX REPLACE "\\$|\\{|\\}" "" correct_element ${incorrect_element})      MESSAGE(FATAL_ERROR "In ${filepath}, ${incorrect_element} should be replaced by ${correct_element}")    ENDFOREACH()    # Make sure the variable is cleared    SET(target_libraries)    INCLUDE(${filepath})        LIST(APPEND ${varname} ${target_libraries})    LIST(REMOVE_DUPLICATES ${varname})  ENDIF()ENDMACRO()###MACRO(ctkMacroCollectAllTargetLibraries targets subdir varname)  SET(option_prefix)  IF(${subdir} STREQUAL "Libs")    SET(option_prefix CTK_LIB_)  ELSEIF(${subdir} STREQUAL "Plugins")    SET(option_prefix CTK_PLUGIN_)  ELSEIF(${subdir} STREQUAL "Applications")    SET(option_prefix CTK_APP_)  ELSE()    MESSAGE(FATAL_ERROR "Unknown subdir:${subdir}, expected value are: 'Libs, 'Plugins' or 'Applications'")  ENDIF()    FOREACH(target ${targets})    # Make sure the variable is cleared    SET(target_libraries )    SET(option_name ${option_prefix}${target})    #MESSAGE(STATUS option_name:${option_name})    SET(target_dir "${CTK_SOURCE_DIR}/${subdir}/${target}")    #MESSAGE(STATUS target_dir:${target_dir})        ctkMacroCollectTargetLibraryNames(${target_dir} ${option_name} target_libraries)    LIST(APPEND ${varname} ${target_libraries})    LIST(REMOVE_DUPLICATES ${varname})  ENDFOREACH()  ENDMACRO()## Extract all library names starting with CTK uppercase#MACRO(ctkMacroGetAllCTKTargetLibraries all_target_libraries varname)  SET(re_ctklib "^(c|C)(t|T)(k|K)[a-zA-Z0-9]+$")  SET(_tmp_list)  LIST(APPEND _tmp_list ${all_target_libraries})  ctkMacroListFilter(_tmp_list re_ctklib OUTPUT_VARIABLE ${varname})  #MESSAGE(STATUS varname:${varname}:${${varname}})ENDMACRO()## Extract all library names *NOT* starting with CTK uppercase#MACRO(ctkMacroGetAllNonCTKTargetLibraries all_target_libraries varname)  ctkMacroGetAllCTKTargetLibraries("${all_target_libraries}" all_ctk_libraries)  SET(_tmp_list ${all_target_libraries})  LIST(REMOVE_ITEM _tmp_list ${all_ctk_libraries})  SET(${varname} ${_tmp_list})  #MESSAGE(STATUS varname:${varname}:${${varname}})ENDMACRO()## #MACRO(ctkMacroShouldAddExternalProject libraries_variable_name resultvar)  IF(NOT DEFINED NON_CTK_DEPENDENCIES)    MESSAGE(FATAL_ERROR "Variable NON_CTK_DEPENDENCIES is undefined !")  ENDIF()   LIST(FIND NON_CTK_DEPENDENCIES ${libraries_variable_name} index)  SET(${resultvar} FALSE)  IF(${index} GREATER -1)    SET(${resultvar} TRUE)  ENDIF()ENDMACRO()
 |