-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
169 lines (146 loc) · 6.43 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
cmake_minimum_required(VERSION 3.13.4)
# Enable C++11
if(NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 11)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# 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 git://github.com/Slicer/Slicer
GIT_TAG 0d7f7bad74fa337bd211a5d09db1a0688e178b8d
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(NathanCustomApp)
# Configure Application
set(Slicer_APPLICATIONS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Applications)
set(Slicer_MAIN_PROJECT "NathanCustomAppApp")
# Set organization
set(Slicer_ORGANIZATION_DOMAIN "kitware.com")
set(Slicer_ORGANIZATION_NAME "Nathan Corp")
# 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.nathancustomapp")
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 "Build application executable as a console app" OFF)
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" 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" OFF)
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
Endoscopy
LabelStatistics
PerformanceTests
SampleData
VectorToScalarVolume
)
# Enable/Disable Slicer custom modules: To create a new module, use the SlicerExtensionWizard.
set(Slicer_EXTENSION_SOURCE_DIRS
#${NathanCustomApp_SOURCE_DIR}/Modules/CLI/MyCLIModule
#${NathanCustomApp_SOURCE_DIR}/Modules/Loadable/MyLoadableModule
${NathanCustomApp_SOURCE_DIR}/Modules/Scripted/Home
)
# 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})
# Nathan Extension
set(extension_name "NathanSlicerExtension")
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/nathanbmnt/NathanSlicerExtension.git
GIT_TAG ec640f5f1394753389a1bd2eeece458ae941aee1
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})