CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkBlockCheckDependencies.cmake
Go to the documentation of this file.
1 
2 #
3 # Independently of the value of CTK_SUPERBUILD, each external project definition will
4 # provides either the include and library directories or a variable name
5 # used by the corresponding Find<package>.cmake files.
6 #
7 # Within top-level CMakeLists.txt file, the variable names will be expanded if not in
8 # superbuild mode. The include and library dirs are then used in
9 # ctkMacroBuildApp, ctkMacroBuildLib, and ctkMacroBuildPlugin
10 #
11 
12 #-----------------------------------------------------------------------------
13 # Collect CTK library target dependencies
14 #
15 
16 ctkMacroCollectAllTargetLibraries("${CTK_LIBS}" "Libs" ALL_TARGET_LIBRARIES)
17 ctkMacroCollectAllTargetLibraries("${CTK_PLUGINS}" "Plugins" ALL_TARGET_LIBRARIES)
18 ctkMacroCollectAllTargetLibraries("${CTK_APPS}" "Applications" ALL_TARGET_LIBRARIES)
19 #message(STATUS ALL_TARGET_LIBRARIES:${ALL_TARGET_LIBRARIES})
20 
21 #-----------------------------------------------------------------------------
22 # Initialize NON_CTK_DEPENDENCIES variable
23 #
24 # Using the variable ALL_TARGET_LIBRARIES initialized above with the help
25 # of the macro ctkMacroCollectAllTargetLibraries, let's get the list of all Non-CTK dependencies.
26 # NON_CTK_DEPENDENCIES is expected by the macro ctkMacroShouldAddExternalProject
27 ctkMacroGetAllNonProjectTargetLibraries("${ALL_TARGET_LIBRARIES}" NON_CTK_DEPENDENCIES)
28 #message(NON_CTK_DEPENDENCIES:${NON_CTK_DEPENDENCIES})
29 
30 #-----------------------------------------------------------------------------
31 # Enable and setup External project global properties
32 #
33 
34 if(CTK_SUPERBUILD)
35  set(ep_install_dir ${CMAKE_BINARY_DIR}/CMakeExternals/Install)
36  set(ep_suffix "-cmake")
37 
38  set(ep_common_c_flags "${CMAKE_C_FLAGS_INIT} ${ADDITIONAL_C_FLAGS}")
39  set(ep_common_cxx_flags "${CMAKE_CXX_FLAGS_INIT} ${ADDITIONAL_CXX_FLAGS}")
40 
41  set(ep_common_cache_args
42  -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
43  -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
44  -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
45  -DCMAKE_C_FLAGS:STRING=${ep_common_c_flags}
46  -DCMAKE_CXX_FLAGS:STRING=${ep_common_cxx_flags}
47  -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
48  -DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}
49  -DBUILD_TESTING:BOOL=OFF
50  )
51 endif()
52 
53 if(NOT DEFINED CTK_DEPENDENCIES)
54  message(FATAL_ERROR "error: CTK_DEPENDENCIES variable is not defined !")
55 endif()
56 
57 set(DCMTK_enabling_variable DCMTK_LIBRARIES)
58 set(${DCMTK_enabling_variable}_INCLUDE_DIRS DCMTK_INCLUDE_DIR)
59 set(${DCMTK_enabling_variable}_FIND_PACKAGE_CMD DCMTK)
60 
61 set(ITK_enabling_variable ITK_LIBRARIES)
62 set(${ITK_enabling_variable}_LIBRARY_DIRS ITK_LIBRARY_DIRS)
63 set(${ITK_enabling_variable}_INCLUDE_DIRS ITK_INCLUDE_DIRS)
64 set(${ITK_enabling_variable}_FIND_PACKAGE_CMD ITK)
65 
66 set(Log4Qt_enabling_variable Log4Qt_LIBRARIES)
67 set(${Log4Qt_enabling_variable}_INCLUDE_DIRS Log4Qt_INCLUDE_DIRS)
68 set(${Log4Qt_enabling_variable}_FIND_PACKAGE_CMD Log4Qt)
69 
70 set(OpenIGTLink_enabling_variable OpenIGTLink_LIBRARIES)
71 set(${OpenIGTLink_enabling_variable}_LIBRARY_DIRS OpenIGTLink_LIBRARY_DIRS)
72 set(${OpenIGTLink_enabling_variable}_INCLUDE_DIRS OpenIGTLink_INCLUDE_DIRS)
73 set(${OpenIGTLink_enabling_variable}_FIND_PACKAGE_CMD OpenIGTLink)
74 
75 set(PythonQt_enabling_variable PYTHONQT_LIBRARIES)
76 set(${PythonQt_enabling_variable}_INCLUDE_DIRS PYTHONQT_INCLUDE_DIR PYTHON_INCLUDE_DIRS)
77 set(${PythonQt_enabling_variable}_FIND_PACKAGE_CMD PythonQt)
78 
79 set(QtSOAP_enabling_variable QtSOAP_LIBRARIES)
80 set(${QtSOAP_enabling_variable}_LIBRARY_DIRS QtSOAP_LIBRARY_DIRS)
81 set(${QtSOAP_enabling_variable}_INCLUDE_DIRS QtSOAP_INCLUDE_DIRS)
82 set(${QtSOAP_enabling_variable}_FIND_PACKAGE_CMD QtSOAP)
83 
84 set(QtTesting_enabling_variable QtTesting_LIBRARIES)
85 set(${QtTesting_enabling_variable}_INCLUDE_DIRS QtTesting_INCLUDE_DIRS)
86 set(${QtTesting_enabling_variable}_FIND_PACKAGE_CMD QtTesting)
87 
88 set(qxmlrpc_enabling_variable qxmlrpc_LIBRARY)
89 set(${qxmlrpc_enabling_variable}_LIBRARY_DIRS qxmlrpc_LIBRARY_DIRS)
90 set(${qxmlrpc_enabling_variable}_INCLUDE_DIRS qxmlrpc_INCLUDE_DIRS)
91 set(${qxmlrpc_enabling_variable}_FIND_PACKAGE_CMD qxmlrpc)
92 
93 set(qRestAPI_enabling_variable qRestAPI_LIBRARIES)
94 set(${qRestAPI_enabling_variable}_LIBRARY_DIRS qRestAPI_LIBRARY_DIRS)
95 set(${qRestAPI_enabling_variable}_INCLUDE_DIRS qRestAPI_INCLUDE_DIRS)
96 set(${qRestAPI_enabling_variable}_FIND_PACKAGE_CMD qRestAPI)
97 
98 set(VTK_enabling_variable VTK_LIBRARIES)
99 set(${VTK_enabling_variable}_LIBRARY_DIRS VTK_LIBRARY_DIRS)
100 set(${VTK_enabling_variable}_INCLUDE_DIRS VTK_INCLUDE_DIRS)
101 set(${VTK_enabling_variable}_FIND_PACKAGE_CMD VTK)
102 
103 set(XIP_enabling_variable XIP_LIBRARIES)
104 set(${XIP_enabling_variable}_LIBRARY_DIRS XIP_LIBRARY_DIRS)
105 set(${XIP_enabling_variable}_INCLUDE_DIRS XIP_INCLUDE_DIRS)
106 set(${XIP_enabling_variable}_FIND_PACKAGE_CMD XIP)
107 
108 set(ZMQ_enabling_variable ZMQ_LIBRARIES)
109 set(${ZMQ_enabling_variable}_LIBRARY_DIRS ZMQ_LIBRARY_DIRS)
110 set(${ZMQ_enabling_variable}_INCLUDE_DIRS ZMQ_INCLUDE_DIRS)
111 set(${ZMQ_enabling_variable}_FIND_PACKAGE_CMD ZMQ)
112 
113 macro(superbuild_is_external_project_includable possible_proj output_var)
114  if(DEFINED ${possible_proj}_enabling_variable)
115  ctkMacroShouldAddExternalProject(${${possible_proj}_enabling_variable} ${output_var})
116  if(NOT ${${output_var}})
117  if(${possible_proj} STREQUAL "VTK"
118  AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
119  set(${output_var} 1)
120  else()
121  unset(${${possible_proj}_enabling_variable}_INCLUDE_DIRS)
122  unset(${${possible_proj}_enabling_variable}_LIBRARY_DIRS)
123  unset(${${possible_proj}_enabling_variable}_FIND_PACKAGE_CMD)
124  endif()
125  endif()
126  else()
127  set(${output_var} 1)
128  endif()
129 endmacro()
130 
131 set(proj CTK)
132 ExternalProject_Include_Dependencies(CTK
133  PROJECT_VAR proj
134  DEPENDS_VAR CTK_DEPENDENCIES
135  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
136  )
137 
138 #message("Updated CTK_DEPENDENCIES:")
139 #foreach(dep ${CTK_DEPENDENCIES})
140 # message(" ${dep}")
141 #endforeach()