#
#
#
MACRO(ctkMacroGenerateProjectXml dir name target_directories)
IF(NOT EXISTS ${dir})
MESSAGE(FATAL_ERROR "Directory ${dir} doesn't exist!")
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()
# 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} ${option_name} dependencies)
# Make sure the variable is cleared
SET(ctk_dependencies)
# filter dependencies starting with CTK
ctkMacroGetAllCTKTargetLibraries("${dependencies}" ctk_dependencies)
# Generate XML related to the dependencies
FOREACH(dependency_name ${ctk_dependencies})
SET(xml_subprojects ${xml_subprojects} " \n")
ENDFOREACH()
SET(xml_subprojects ${xml_subprojects} " \n")
ENDFOREACH()
SET(xml_content "\n${xml_subprojects}")
SET(filename "${dir}/Project.xml")
FILE(WRITE ${filename} ${xml_content})
MESSAGE(STATUS "Generated: ${filename}")
ENDMACRO()