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
16ctkMacroCollectAllTargetLibraries("${CTK_LIBS}" "Libs" ALL_TARGET_LIBRARIES)
17ctkMacroCollectAllTargetLibraries("${CTK_PLUGINS}" "Plugins" ALL_TARGET_LIBRARIES)
18ctkMacroCollectAllTargetLibraries("${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
27ctkMacroGetAllNonProjectTargetLibraries("${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
34if(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_cxx_standard_arg)
42 if(CMAKE_CXX_STANDARD)
43 set(ep_cxx_standard_arg "-DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}")
44 endif()
45
46 set(ep_common_cache_args
47 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
48 -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
49 -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
50 -DCMAKE_C_FLAGS:STRING=${ep_common_c_flags}
51 -DCMAKE_CXX_FLAGS:STRING=${ep_common_cxx_flags}
52 -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
53 -DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}
54 -DBUILD_TESTING:BOOL=OFF
55 -DCMAKE_MACOSX_RPATH:BOOL=${CMAKE_MACOSX_RPATH}
56 ${ep_cxx_standard_arg}
57 )
58endif()
59
60if(NOT DEFINED CTK_DEPENDENCIES)
61 message(FATAL_ERROR "error: CTK_DEPENDENCIES variable is not defined !")
62endif()
63
64set(DCMTK_enabling_variable DCMTK_LIBRARIES)
65set(${DCMTK_enabling_variable}_INCLUDE_DIRS DCMTK_INCLUDE_DIR)
66set(${DCMTK_enabling_variable}_FIND_PACKAGE_CMD DCMTK)
67
68set(ITK_enabling_variable ITK_LIBRARIES)
69set(${ITK_enabling_variable}_LIBRARY_DIRS ITK_LIBRARY_DIRS)
70set(${ITK_enabling_variable}_INCLUDE_DIRS ITK_INCLUDE_DIRS)
71set(${ITK_enabling_variable}_FIND_PACKAGE_CMD ITK)
72
73set(Log4Qt_enabling_variable Log4Qt_LIBRARIES)
74set(${Log4Qt_enabling_variable}_INCLUDE_DIRS Log4Qt_INCLUDE_DIRS)
75set(${Log4Qt_enabling_variable}_FIND_PACKAGE_CMD Log4Qt)
76
77set(OpenIGTLink_enabling_variable OpenIGTLink_LIBRARIES)
78set(${OpenIGTLink_enabling_variable}_LIBRARY_DIRS OpenIGTLink_LIBRARY_DIRS)
79set(${OpenIGTLink_enabling_variable}_INCLUDE_DIRS OpenIGTLink_INCLUDE_DIRS)
80set(${OpenIGTLink_enabling_variable}_FIND_PACKAGE_CMD OpenIGTLink)
81
82set(PythonQt_enabling_variable PYTHONQT_LIBRARIES)
83set(${PythonQt_enabling_variable}_INCLUDE_DIRS PYTHONQT_INCLUDE_DIR PYTHON_INCLUDE_DIRS)
84set(${PythonQt_enabling_variable}_FIND_PACKAGE_CMD PythonQt)
85
86set(QtSOAP_enabling_variable QtSOAP_LIBRARIES)
87set(${QtSOAP_enabling_variable}_LIBRARY_DIRS QtSOAP_LIBRARY_DIRS)
88set(${QtSOAP_enabling_variable}_INCLUDE_DIRS QtSOAP_INCLUDE_DIRS)
89set(${QtSOAP_enabling_variable}_FIND_PACKAGE_CMD QtSOAP)
90
91set(QtTesting_enabling_variable QtTesting_LIBRARIES)
92set(${QtTesting_enabling_variable}_INCLUDE_DIRS QtTesting_INCLUDE_DIRS)
93set(${QtTesting_enabling_variable}_FIND_PACKAGE_CMD QtTesting)
94
95set(qxmlrpc_enabling_variable qxmlrpc_LIBRARY)
96set(${qxmlrpc_enabling_variable}_LIBRARY_DIRS qxmlrpc_LIBRARY_DIRS)
97set(${qxmlrpc_enabling_variable}_INCLUDE_DIRS qxmlrpc_INCLUDE_DIRS)
98set(${qxmlrpc_enabling_variable}_FIND_PACKAGE_CMD qxmlrpc)
99
100set(qRestAPI_enabling_variable qRestAPI_LIBRARIES)
101set(${qRestAPI_enabling_variable}_LIBRARY_DIRS qRestAPI_LIBRARY_DIRS)
102set(${qRestAPI_enabling_variable}_INCLUDE_DIRS qRestAPI_INCLUDE_DIRS)
103set(${qRestAPI_enabling_variable}_FIND_PACKAGE_CMD qRestAPI)
104
105set(VTK_enabling_variable VTK_LIBRARIES)
106set(${VTK_enabling_variable}_LIBRARY_DIRS VTK_LIBRARY_DIRS)
107set(${VTK_enabling_variable}_INCLUDE_DIRS VTK_INCLUDE_DIRS)
108set(${VTK_enabling_variable}_FIND_PACKAGE_CMD VTK)
109
110set(ZMQ_enabling_variable ZMQ_LIBRARIES)
111set(${ZMQ_enabling_variable}_LIBRARY_DIRS ZMQ_LIBRARY_DIRS)
112set(${ZMQ_enabling_variable}_INCLUDE_DIRS ZMQ_INCLUDE_DIRS)
113set(${ZMQ_enabling_variable}_FIND_PACKAGE_CMD ZMQ)
114
115macro(superbuild_is_external_project_includable possible_proj output_var)
116 if(DEFINED ${possible_proj}_enabling_variable)
117 ctkMacroShouldAddExternalProject(${${possible_proj}_enabling_variable} ${output_var})
118 if(NOT ${${output_var}})
119 if(${possible_proj} STREQUAL "VTK"
120 AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
121 set(${output_var} 1)
122 else()
123 unset(${${possible_proj}_enabling_variable}_INCLUDE_DIRS)
124 unset(${${possible_proj}_enabling_variable}_LIBRARY_DIRS)
125 unset(${${possible_proj}_enabling_variable}_FIND_PACKAGE_CMD)
126 endif()
127 endif()
128 else()
129 set(${output_var} 1)
130 endif()
131endmacro()
132
133set(proj CTK)
134ExternalProject_Include_Dependencies(CTK
135 PROJECT_VAR proj
136 DEPENDS_VAR CTK_DEPENDENCIES
137 USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
138 )
139
140#message("Updated CTK_DEPENDENCIES:")
141#foreach(dep ${CTK_DEPENDENCIES})
142# message(" ${dep}")
143#endforeach()