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