# # # MACRO(ctkMacroGenerateProjectXml dir name target_directories is_superbuild) IF(NOT EXISTS ${dir}) MESSAGE(FATAL_ERROR "Directory ${dir} doesn't exist!") ENDIF() SET(xml_subprojects ) IF(${is_superbuild}) SET(xml_subprojects ${xml_subprojects} " \n") ENDIF() FOREACH(target_info ${target_directories}) # extract target_dir and option_name STRING(REPLACE "^^" "\\;" target_info ${target_info}) SET(target_info_list ${target_info}) LIST(GET target_info_list 0 target_dir) LIST(GET target_info_list 1 option_name) #MESSAGE(STATUS target_dir:${target_dir}) #MESSAGE(STATUS option_name:${option_name}) # make sure the directory exists IF(NOT EXISTS ${target_dir}/CMakeLists.txt) MESSAGE(FATAL_ERROR "Target directory ${target_dir}/CMakeLists.txt doesn't exists !") ENDIF() IF(${option_name}) # extract project name from CMakeLists.txt FILE(STRINGS "${target_dir}/CMakeLists.txt" project_string REGEX "^ *(P|p)(R|r)(O|o)(J|j)(E|e)(C|c)(T|t)\\(" LIMIT_COUNT 10) STRING(REGEX MATCH "\\((.*)\\)" target_project_name ${project_string}) STRING(REGEX REPLACE "\\(|\\)" "" target_project_name ${target_project_name}) IF(${target_project_name} STREQUAL "") MESSAGE(FATAL_ERROR "Failed to extract project name from ${target_dir}/CMakeLists.txt") ENDIF() #MESSAGE(STATUS target_project_name:${target_project_name}) SET(xml_subprojects ${xml_subprojects} " \n") # Make sure the variable is cleared SET(dependencies ) # get dependencies ctkMacroCollectTargetLibraryNames(${target_dir} dependencies) # Make sure the variable is cleared SET(ctk_dependencies) # filter dependencies starting with CTK ctkMacroGetAllCTKTargetLibraries("${dependencies}" ctk_dependencies) IF(${is_superbuild}) SET(xml_subprojects ${xml_subprojects} " \n") ENDIF() # Generate XML related to the dependencies FOREACH(dependency_name ${ctk_dependencies}) SET(xml_subprojects ${xml_subprojects} " \n") ENDFOREACH() SET(xml_subprojects ${xml_subprojects} " \n") ENDIF() ENDFOREACH() SET(xml_content "\n${xml_subprojects}") SET(filename "${dir}/Project.xml") FILE(WRITE ${filename} ${xml_content}) MESSAGE(STATUS "Generated: ${filename}") ENDMACRO()