Computer Assited Medical Intervention Tool Kit  version 4.0
CamiTKSubProjectAdd.h
Go to the documentation of this file.
18  parse_arguments(ADD_SUB_PROJECT
19  "ACTIONCOMPONENTCEP_LIBRARYAPPLICATIONCORELIBDEPENDENCIES" # possible lists
20  "" #possible options
21  ${ARGN}
22  )
23 
24  # check types
25  # CORE LIBRARIES
26  if(ADD_SUB_PROJECT_CORELIB)
27  set(SUB_PROJECT_NAME ${ADD_SUB_PROJECT_CORELIB})
28  # Add the xml node for this current subproject
29  set(xml_subproject_corelibraries ${xml_subproject_corelibraries} "\n <SubProject name=\"${SUB_PROJECT_NAME}\">" CACHE INTERNAL "")
30  foreach(DEPENDENCY ${ADD_SUB_PROJECT_DEPENDENCIES})
31  set(xml_subproject_corelibraries ${xml_subproject_corelibraries} "\n <Dependency name=\"${DEPENDENCY}\"/>" CACHE INTERNAL "")
32  endforeach()
33  set(xml_subproject_corelibraries ${xml_subproject_corelibraries} " </SubProject>" CACHE INTERNAL "")
34  endif()
35 
36  # LIBRARY
37  if(ADD_SUB_PROJECT_CEP_LIBRARY)
38  set(SUB_PROJECT_NAME ${ADD_SUB_PROJECT_CEP_LIBRARY})
39  # Add the xml node for this current subproject
40  set(xml_subproject_libraries ${xml_subproject_libraries} "\n <SubProject name=\"${SUB_PROJECT_NAME}\">" CACHE INTERNAL "")
41  foreach(DEPENDENCY ${ADD_SUB_PROJECT_DEPENDENCIES})
42  set(xml_subproject_libraries ${xml_subproject_libraries} "\n <Dependency name=\"${DEPENDENCY}\"/>" CACHE INTERNAL "")
43  endforeach()
44  set(xml_subproject_libraries ${xml_subproject_libraries} " </SubProject>" CACHE INTERNAL "")
45  set(CAMITK_CEP_LIBRARY_TARGETS ${CAMITK_CEP_LIBRARY_TARGETS} ${SUB_PROJECT_NAME} CACHE STRING "List of CamiTK CEP library targets" FORCE)
46  endif()
47 
48  # COMPONENTS
49  if(ADD_SUB_PROJECT_COMPONENT)
50  set(SUB_PROJECT_NAME ${ADD_SUB_PROJECT_COMPONENT})
51  # Add the xml node for this current subproject
52  set(xml_subproject_components ${xml_subproject_components} "\n <SubProject name=\"${SUB_PROJECT_NAME}\">" CACHE INTERNAL "")
53  foreach(DEPENDENCY ${ADD_SUB_PROJECT_DEPENDENCIES})
54  set(xml_subproject_components ${xml_subproject_components} "\n <Dependency name=\"${DEPENDENCY}\"/>" CACHE INTERNAL "")
55  endforeach()
56  set(xml_subproject_components ${xml_subproject_components} " </SubProject>" CACHE INTERNAL "")
57  set(CAMITK_COMPONENT_TARGETS ${CAMITK_COMPONENT_TARGETS} ${SUB_PROJECT_NAME} CACHE STRING "List of CamiTK component targets" FORCE)
58  endif()
59 
60  # ACTIONS
61  if(ADD_SUB_PROJECT_ACTION)
62  set(SUB_PROJECT_NAME ${ADD_SUB_PROJECT_ACTION})
63  if(SUB_PROJECT_NAME STREQUAL "action-application")
64  # Particular case of action-applications
65  set(xml_subproject_action_application "\n <SubProject name=\"${SUB_PROJECT_NAME}\">" CACHE INTERNAL "")
66  set(xml_subproject_action_application ${xml_subproject_action_application} "\n <Dependency name=\"library-camitkcore\"/>" CACHE INTERNAL "")
67  set(xml_subproject_action_application ${xml_subproject_action_application} " </SubProject>" CACHE INTERNAL "")
68  else()
69  # Add the xml node for this current subproject
70  set(xml_subproject_actions ${xml_subproject_actions} "\n <SubProject name=\"${SUB_PROJECT_NAME}\">" CACHE INTERNAL "")
71  foreach(DEPENDENCY ${ADD_SUB_PROJECT_DEPENDENCIES})
72  set(xml_subproject_actions ${xml_subproject_actions} "\n <Dependency name=\"${DEPENDENCY}\"/>" CACHE INTERNAL "")
73  endforeach()
74  set(xml_subproject_actions ${xml_subproject_actions} " </SubProject>" CACHE INTERNAL "")
75  endif()
76  set(CAMITK_ACTION_TARGETS ${CAMITK_ACTION_TARGETS} ${SUB_PROJECT_NAME} CACHE STRING "List of CamiTK action targets" FORCE)
77  endif()
78 
79  # APPLICATION
80  if(ADD_SUB_PROJECT_APPLICATION)
81  set(SUB_PROJECT_NAME ${ADD_SUB_PROJECT_APPLICATION})
82  # Add the xml node for this current subproject
83  set(xml_subproject_applications ${xml_subproject_applications} "\n <SubProject name=\"${SUB_PROJECT_NAME}\">" CACHE INTERNAL "")
84  foreach(DEPENDENCY ${ADD_SUB_PROJECT_DEPENDENCIES})
85  set(xml_subproject_applications ${xml_subproject_applications} "\n <Dependency name=\"${DEPENDENCY}\"/>" CACHE INTERNAL "")
86  endforeach()
87  set(xml_subproject_applications ${xml_subproject_applications} " </SubProject>" CACHE INTERNAL "")
88  set(CAMITK_APPLICATION_TARGETS ${CAMITK_APPLICATION_TARGETS} ${SUB_PROJECT_NAME} CACHE STRING "List of CamiTK applications targets" FORCE)
89  endif()
90 
91  # CDash subprojects listing
92  set(CAMITK_SUBPROJECTS ${CAMITK_SUBPROJECTS} ${SUB_PROJECT_NAME} CACHE INTERNAL "")
93 
94 end(){)
parse_arguments()
macro parse_arguments is a fork from CMakeMacroParseArguments see http://www.cmake.org/Wiki/CMakeMacroParseArguments for more information
Definition: ParseArguments.h:13
camitk_sub_project_add()
macro camitk_sub_project_add adds a subproject definition from targets and its dependencies (if any) ...
Definition: CamiTKSubProjectAdd.h:17