forked from InsightSoftwareConsortium/ITK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
177 lines (159 loc) · 6.73 KB
/
CMakeLists.txt
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# If any utility projects have their own testing targets,
# tell Dart.cmake to generate the Experimental test target with the
# project name. This avoids the conflict in msdev between the
# Experimental testing targets for main ITK and nested projects.
SET(DART_EXPERIMENTAL_USE_PROJECT_NAME 1)
# Create a header to hold the options for use of third party
# utilities.
CONFIGURE_FILE(${ITK_SOURCE_DIR}/Utilities/itkThirdParty.h.in
${ITK_BINARY_DIR}/Utilities/itkThirdParty.h @ONLY IMMEDIATE)
#-----------------------------------------------------------------------------
# Create the kwsys library for ITK.
SET(KWSYS_NAMESPACE itksys)
SET(KWSYS_USE_SystemTools 1)
SET(KWSYS_USE_RegularExpression 1)
SET(KWSYS_USE_Directory 1)
SET(KWSYS_USE_Base64 1)
SET(KWSYS_USE_FundamentalType 1)
SET(KWSYS_USE_CommandLineArguments 1)
SET(KWSYS_USE_Process 1)
SET(KWSYS_USE_DynamicLoader 1)
SET(KWSYS_USE_Glob 1)
SET(KWSYS_USE_Registry 1)
SET(KWSYS_USE_SystemInformation 1)
SET(KWSYS_HEADER_ROOT ${ITK_BINARY_DIR}/Utilities)
SET(KWSYS_PROPERTIES_CXX ${ITK_LIBRARY_PROPERTIES})
SET(KWSYS_LIBRARY_INSTALL_DIR)
IF(NOT ITK_INSTALL_NO_LIBRARIES)
SET(KWSYS_LIBRARY_INSTALL_DIR ${ITK_INSTALL_LIB_DIR})
ENDIF(NOT ITK_INSTALL_NO_LIBRARIES)
SET(KWSYS_HEADER_INSTALL_DIR)
IF(NOT ITK_INSTALL_NO_DEVELOPMENT)
SET(KWSYS_HEADER_INSTALL_DIR ${ITK_INSTALL_INCLUDE_DIR}/Utilities)
ENDIF(NOT ITK_INSTALL_NO_DEVELOPMENT)
SET(KWSYS_INSTALL_COMPONENT_NAME_RUNTIME RuntimeLibraries)
SET(KWSYS_INSTALL_COMPONENT_NAME_DEVELOPMENT Development)
ADD_SUBDIRECTORY(kwsys)
#------------------------------------------------------------------------------
# Build jpeg first because tiff needs it
ADD_SUBDIRECTORY(itkjpeg)
#------------------------------------------------------------------------------
# Build third-party utilities.
ITK_THIRD_PARTY_SUBDIR(ZLIB itkzlib)
ITK_THIRD_PARTY_SUBDIR(PNG itkpng)
ITK_THIRD_PARTY_SUBDIR(TIFF itktiff)
SET(OPJ_PREFIX "itk")
ITK_THIRD_PARTY_SUBDIR(OpenJPEG openjpeg)
ITK_THIRD_PARTY_SUBDIR(GDCM gdcm)
#
# Handle the special case of building libxml2
# Fetch libxml2 using subversion if requested
IF(ITK_USE_LIBXML2)
IF(NOT ITK_USE_SYSTEM_LIBXML2)
IF(EXISTS "${ITK_BINARY_DIR}/Utilities/itklibxml2/VERSION_2_6_27_1.txt")
SUBDIRS( "${ITK_BINARY_DIR}/Utilities/itklibxml2" )
ELSE(EXISTS "${ITK_BINARY_DIR}/Utilities/itklibxml2/VERSION_2_6_27_1.txt")
IF(NOT SVNCOMMAND)
IF(Subversion_SVN_EXECUTABLE)
SET(SVNCOMMAND ${Subversion_SVN_EXECUTABLE})
ELSE(Subversion_SVN_EXECUTABLE)
FIND_PACKAGE(Subversion REQUIRED)
IF(Subversion_SVN_FOUND)
SET(SVNCOMMAND ${Subversion_SVN_EXECUTABLE})
ELSE(Subversion_SVN_FOUND)
MESSAGE(FATAL_ERROR "Subversion is required to install itklibxml2. Point SVNCOMMAND to your svn executable.")
ENDIF(Subversion_SVN_FOUND)
ENDIF(Subversion_SVN_EXECUTABLE)
ENDIF(NOT SVNCOMMAND)
SET(svnCmd "co")
SET(svnRevFlag "-r")
SET(svnRevNum "188")
SET(svnSite "https://www.kitware.com:8443/svn/KWPublic/trunk/libxml2")
SET(svnDir "${ITK_BINARY_DIR}/Utilities")
FILE(WRITE ${ITK_BINARY_DIR}/Utilities/t "t\n")
EXECUTE_PROCESS(
COMMAND "${SVNCOMMAND}" ${svnCmd} ${svnRevFlag} ${svnRevNum} ${svnSite} ${svnDir}
INPUT_FILE ${ITK_BINARY_DIR}/Utilities/t
OUTPUT_VARIABLE svnOutput
ERROR_VARIABLE svnError
RESULT_VARIABLE svnResult
)
# Result should be 0 on success
IF(NOT svnResult)
ADD_SUBDIRECTORY( "${ITK_BINARY_DIR}/Utilities/itklibxml2"
"${ITK_BINARY_DIR}/Utilities/itklibxml2" )
ELSE(NOT svnResult)
MESSAGE(FATAL_ERROR "SVN checkout of itklibxml2 failed with error = ${svnError}")
ENDIF(NOT svnResult)
ENDIF(EXISTS "${ITK_BINARY_DIR}/Utilities/itklibxml2/VERSION_2_6_27_1.txt")
ELSE(NOT ITK_USE_SYSTEM_LIBXML2)
MESSAGE(FATAL_ERROR "You cannot enable both ITK_USE_SYSTEM_LIBXML2 and ITK_USE_LIBXML2. Enable the SYSTEM variable if libxml2 is already installed outside of the Insight build directory.")
ENDIF(NOT ITK_USE_SYSTEM_LIBXML2)
ENDIF(ITK_USE_LIBXML2)
#------------------------------------------------------------------------------
# Other utilities libraries
ADD_SUBDIRECTORY(MetaIO)
ADD_SUBDIRECTORY(NrrdIO)
ADD_SUBDIRECTORY(expat)
ADD_SUBDIRECTORY(nifti)
ADD_SUBDIRECTORY(itkExtHdrs)
ADD_SUBDIRECTORY(KWStyle)
#------------------------------------------------------------------------------
# Create the DICOMParse library for ITK
SET(DICOMPARSER_NAMESPACE itkdicomparser)
SET(DICOMPARSER_LIBRARY ITKDICOMParser)
SET(DICOMPARSER_STANDALONE 0)
ADD_SUBDIRECTORY(DICOMParser)
IF(ITK_DISABLE_CXX_TESTING)
SET(BUILD_TESTING OFF)
ENDIF(ITK_DISABLE_CXX_TESTING)
#------------------------------------------------------------------------------
# Configure vxl/vnl as needed
IF(NOT ITK_USE_SYSTEM_VXL)
ADD_SUBDIRECTORY(vxl)
ENDIF(NOT ITK_USE_SYSTEM_VXL)
#------------------------------------------------------------------------------
# This directory depends on VXL V3p
ADD_SUBDIRECTORY(netlib)
#------------------------------------------------------------------------------
# Build testing as needed
IF (BUILD_TESTING)
ADD_SUBDIRECTORY(Dart)
ENDIF (BUILD_TESTING)
#-----------------------------------------------------------------------------
# ITK build configuration options.
IF(BUILD_DOXYGEN)
ADD_SUBDIRECTORY(Doxygen)
ENDIF(BUILD_DOXYGEN)
#-----------------------------------------------------------------------------
# Install the UseITK.cmake file configured from the top-level.
IF(NOT ITK_INSTALL_NO_DEVELOPMENT)
INSTALL(FILES ${ITK_BINARY_DIR}/Utilities/ITKConfig.cmake
DESTINATION ${ITK_INSTALL_PACKAGE_DIR_CM24}
COMPONENT Development)
ENDIF(NOT ITK_INSTALL_NO_DEVELOPMENT)
#-----------------------------------------------------------------------------
IF(ITK_USE_FLAT_DIRECTORY_INSTALL)
SET( ITK_INSTALL_INCLUDE_DIR_CM24_UTILITIES ${ITK_INSTALL_INCLUDE_DIR_CM24})
ELSE(ITK_USE_FLAT_DIRECTORY_INSTALL)
SET( ITK_INSTALL_INCLUDE_DIR_CM24_UTILITIES ${ITK_INSTALL_INCLUDE_DIR_CM24}/Utilities)
ENDIF(ITK_USE_FLAT_DIRECTORY_INSTALL)
IF(NOT ITK_INSTALL_NO_DEVELOPMENT)
INSTALL(FILES
${ITK_BINARY_DIR}/Utilities/itkThirdParty.h
${ITK_SOURCE_DIR}/Utilities/itk_zlib.h
${ITK_SOURCE_DIR}/Utilities/itk_tiff.h
${ITK_SOURCE_DIR}/Utilities/itk_png.h
${ITK_SOURCE_DIR}/Utilities/metaIOConfig.h
${ITK_BINARY_DIR}/Utilities/NrrdIO/NrrdConfigure.h
DESTINATION ${ITK_INSTALL_INCLUDE_DIR_CM24_UTILITIES}
COMPONENT Development
)
IF(ITK_USE_LIBXML2)
INSTALL(FILES
"${ITK_BINARY_DIR}/Utilities/itk_libxml2.h"
DESTINATION "${ITK_INSTALL_INCLUDE_DIR_CM24_UTILITIES}"
COMPONENT Development
)
ENDIF(ITK_USE_LIBXML2)
ENDIF(NOT ITK_INSTALL_NO_DEVELOPMENT)