-
Notifications
You must be signed in to change notification settings - Fork 5
/
CMakeLists.txt
231 lines (203 loc) · 8.91 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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
cmake_minimum_required(VERSION 3.16.3)
foreach(p
CMP0135 # CMake 3.24
)
if(POLICY ${p})
cmake_policy(SET ${p} NEW)
endif()
endforeach()
# Enable C++17
if(NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set (EP_GIT_PROTOCOL "https")
# Slicer sources
include(FetchContent)
if(NOT DEFINED slicersources_SOURCE_DIR)
# Download Slicer sources and set variables slicersources_SOURCE_DIR and slicersources_BINARY_DIR
FetchContent_Populate(slicersources
GIT_REPOSITORY ${EP_GIT_PROTOCOL}://github.com/Slicer/Slicer
GIT_TAG 024b340baaa191968b6fc954b9f0e548adb40d6d # 2024-03-06
GIT_PROGRESS 1
)
else()
set(slicersources_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/slicersources-subbuild)
endif()
# macOS initialization
set(CMAKE_MODULE_PATH ${slicersources_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH})
include(SlicerInitializeOSXVariables)
project(vpaw)
# Configure Application
set(Slicer_APPLICATIONS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Applications)
set(Slicer_MAIN_PROJECT "vpawApp")
# Set organization
set(Slicer_ORGANIZATION_DOMAIN "kitware.com")
set(Slicer_ORGANIZATION_NAME "Kitware, Inc.")
# Default home and favorite modules
set(Slicer_DEFAULT_HOME_MODULE "Home")
set(Slicer_DEFAULT_FAVORITE_MODULES "Data, Volumes, Models, Transforms, Markups, SegmentEditor")
# Configure SuperBuild
set(SUPERBUILD_TOPLEVEL_PROJECT Slicer)
set(EXTERNAL_PROJECT_ADDITIONAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/SuperBuild")
include(ExternalProjectDependency)
# Additional Slicer dependencies looked up in EXTERNAL_PROJECT_ADDITIONAL_DIR
set(Slicer_ADDITIONAL_DEPENDENCIES
)
# Enable listed remote modules from ITK
set(Slicer_ITK_ADDITIONAL_MODULES
)
if(NOT CMAKE_CONFIGURATION_TYPES)
set(Slicer_DEFAULT_BUILD_TYPE "Release")
endif()
include(SlicerInitializeBuildType)
include(SlicerInitializeReleaseType)
# Set application bundle identifier for macOS
if(APPLE)
set(Slicer_MACOSX_BUNDLE_GUI_IDENTIFIER "com.kitware.vpaw")
endif()
# Installation folder and admin account requirement for Windows
if(WIN32)
# Note: To avoid escaping issue, make sure to use forward slash when setting
# "Slicer_CPACK_NSIS_INSTALL_ROOT". It is replaced by "\\\\" in SlicerCPack.
set(Slicer_CPACK_NSIS_INSTALL_REQUIRES_ADMIN_ACCOUNT ON)
if(Slicer_CPACK_NSIS_INSTALL_REQUIRES_ADMIN_ACCOUNT)
# User has administrative privileges, therefore we can install to shared folder
# "C:\Program Files" or "C:\Program Files (x86)".
if(CMAKE_CL_64)
set(Slicer_CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
else()
set(Slicer_CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
endif()
else()
# We do not require administrative privileges, therefore we install to user folder
# "C:\Users\<username>\AppData\Local".
set(Slicer_CPACK_NSIS_INSTALL_ROOT "$LOCALAPPDATA/${Slicer_ORGANIZATION_NAME}")
endif()
endif()
# Slicer options
option(BUILD_TESTING "Build application test suite" ON)
option(Slicer_BUILD_DOCUMENTATION "Build documentation (Doxygen, sphinx, ...)" OFF)
if(WIN32)
option(Slicer_BUILD_WIN32_CONSOLE_LAUNCHER "Build ${PROJECT_NAME} launcher executable as a console app on windows (displays console at application start)" OFF)
option(Slicer_BUILD_WIN32_CONSOLE "Build application executable as a console app (allows capturing and piping console output)" ON)
endif()
option(Slicer_BUILD_DICOM_SUPPORT "Build application with DICOM support" ON)
option(Slicer_BUILD_DIFFUSION_SUPPORT "Build application with Diffusion support" OFF)
option(Slicer_BUILD_EXTENSIONMANAGER_SUPPORT "Build application with ExtensionManager support" ON)
option(Slicer_BUILD_APPLICATIONUPDATE_SUPPORT "Build Slicer with application update support" OFF)
option(Slicer_BUILD_MULTIVOLUME_SUPPORT "Build application with MultiVolume support" OFF)
option(Slicer_BUILD_PARAMETERSERIALIZER_SUPPORT "Build application with parameter serializer support" OFF)
option(Slicer_USE_PYTHONQT "Build application with Python support" ON)
option(Slicer_USE_QtTesting "Build application with QtTesting support" OFF)
option(Slicer_USE_SimpleITK "Build application with SimpleITK support" ON)
option(Slicer_BUILD_BRAINSTOOLS "Build application with BRAINSTools module" OFF)
option(Slicer_BUILD_DataStore "Build application with DataStore module" OFF)
option(Slicer_BUILD_CompareVolumes "Build application with ChangeTrackerPy module" OFF)
option(Slicer_BUILD_LandmarkRegistration "Build application with LandmarkRegistration module" OFF)
option(Slicer_BUILD_SurfaceToolbox "Build application with SurfaceToolbox module" OFF)
# Enable Slicer built-in modules
set(Slicer_CLIMODULES_ENABLED
ResampleDTIVolume # Needed by ResampleScalarVectorDWIVolume
ResampleScalarVectorDWIVolume # Depends on DiffusionApplications, needed by CropVolume
)
set(Slicer_QTLOADABLEMODULES_ENABLED
)
set(Slicer_QTSCRIPTEDMODULES_ENABLED
)
# Disable Slicer built-in modules
set(Slicer_CLIMODULES_DISABLED
)
set(Slicer_QTLOADABLEMODULES_DISABLED
SceneViews
SlicerWelcome
ViewControllers
)
set(Slicer_QTSCRIPTEDMODULES_DISABLED
DataProbe
DMRIInstall
LabelStatistics
PerformanceTests
VectorToScalarVolume
)
# Enable/Disable Slicer custom modules: To create a new module, use the SlicerExtensionWizard.
set(Slicer_EXTENSION_SOURCE_DIRS
#${vpaw_SOURCE_DIR}/Modules/CLI/MyCLIModule
#${vpaw_SOURCE_DIR}/Modules/Loadable/MyLoadableModule
${vpaw_SOURCE_DIR}/Modules/Scripted/Home
${vpaw_SOURCE_DIR}/Modules/Scripted/VPAWModel
${vpaw_SOURCE_DIR}/Modules/Scripted/VPAWVisualize
${vpaw_SOURCE_DIR}/Modules/Scripted/VPAWModelOCT
${vpaw_SOURCE_DIR}/Modules/Scripted/VPAWVisualizeOCT
)
# Add remote extension source directories
# SlicerOpenIGTLink
#set(extension_name "SlicerOpenIGTLink")
#set(${extension_name}_SOURCE_DIR "${CMAKE_BINARY_DIR}/${extension_name}")
#FetchContent_Populate(${extension_name}
# SOURCE_DIR ${${extension_name}_SOURCE_DIR}
# GIT_REPOSITORY ${EP_GIT_PROTOCOL}://github.com/openigtlink/SlicerOpenIGTLink.git
# GIT_TAG 2b92f7b1ffe02403109b671f28424e8770e902a0
# GIT_PROGRESS 1
# QUIET
# )
#list(APPEND Slicer_EXTENSION_SOURCE_DIRS ${${extension_name}_SOURCE_DIR})
#SlicerMorph modules
set(extension_name "SlicerMorph")
set(${extension_name}_SOURCE_DIR "${CMAKE_BINARY_DIR}/${extension_name}")
FetchContent_Populate(${extension_name}
SOURCE_DIR ${${extension_name}_SOURCE_DIR}
GIT_REPOSITORY https://github.com/SlicerMorph/SlicerMorph.git
GIT_TAG 270e10baf009807b6107941dd75cb109a9d79905 #2024-01-02
GIT_PROGRESS 1
QUIET
)
list(APPEND Slicer_EXTENSION_SOURCE_DIRS ${${extension_name}_SOURCE_DIR}/ImageStacks)
# #FlyThrough modules
# set(extension_name "FlyThrough")
# set(${extension_name}_SOURCE_DIR "${CMAKE_BINARY_DIR}/${extension_name}")
# FetchContent_Populate(${extension_name}
# SOURCE_DIR ${${extension_name}_SOURCE_DIR}
# GIT_REPOSITORY https://github.com/andinet/FlyThrough.git
# GIT_TAG 5761298cb1bfa602a86ba4fb6b0c29115e1b092a
# GIT_PROGRESS 1
# QUIET
# )
# list(APPEND Slicer_EXTENSION_SOURCE_DIRS ${${extension_name}_SOURCE_DIR})
#SlicerSegmentEditorExtraEffects modules
set(extension_name "SlicerSegmentEditorExtraEffects")
set(${extension_name}_SOURCE_DIR "${CMAKE_BINARY_DIR}/${extension_name}")
FetchContent_Populate(${extension_name}
SOURCE_DIR ${${extension_name}_SOURCE_DIR}
GIT_REPOSITORY https://github.com/lassoan/SlicerSegmentEditorExtraEffects.git
GIT_TAG f43df35af66a0b60000b008e0fa061d53319dc78 #2023-04-15
GIT_PROGRESS 1
QUIET
)
message(STATUS "Remote - ${extension_name} [OK]")
list(APPEND Slicer_EXTENSION_SOURCE_DIRS ${${extension_name}_SOURCE_DIR})
#MarkupsToModel modules
set(extension_name "MarkupsToModel")
set(${extension_name}_SOURCE_DIR "${CMAKE_BINARY_DIR}/${extension_name}")
FetchContent_Populate(${extension_name}
SOURCE_DIR ${${extension_name}_SOURCE_DIR}
GIT_REPOSITORY https://github.com/SlicerIGT/SlicerMarkupsToModel.git
GIT_TAG 312cf9f8ccb84613e191a0a3f18cd3f865026aeb #2023-08-23
GIT_PROGRESS 1
QUIET
)
list(APPEND Slicer_EXTENSION_SOURCE_DIRS ${${extension_name}_SOURCE_DIR})
#AirwaySegmentation modules
set(extension_name "AirwaySegmentation")
set(${extension_name}_SOURCE_DIR "${CMAKE_BINARY_DIR}/${extension_name}")
FetchContent_Populate(${extension_name}
SOURCE_DIR ${${extension_name}_SOURCE_DIR}
GIT_REPOSITORY https://github.com/Slicer/SlicerAirwaySegmentation.git
GIT_TAG d3954e4c1b943353811132d49111f58e40ded5b8 #2022-03-22
GIT_PROGRESS 1
QUIET
)
list(APPEND Slicer_EXTENSION_SOURCE_DIRS ${${extension_name}_SOURCE_DIR})
# Add Slicer sources
add_subdirectory(${slicersources_SOURCE_DIR} ${slicersources_BINARY_DIR})