63
|
1 cmake_minimum_required(VERSION 2.8)
|
|
2 project(OrthancWSIApplications)
|
|
3
|
|
4
|
|
5 #####################################################################
|
|
6 ## Parameters of the build
|
|
7 #####################################################################
|
|
8
|
|
9 # Generic parameters
|
|
10 SET(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)")
|
|
11 SET(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages")
|
|
12 SET(ENABLE_PROFILING OFF CACHE BOOL "Whether to enable the generation of profiling information with gprof")
|
|
13
|
|
14 # Optional components
|
|
15 SET(ENABLE_SSL OFF CACHE BOOL "Include support for SSL")
|
|
16 SET(USE_DCMTK_361 OFF CACHE BOOL "Use forthcoming DCMTK version 3.6.1 in static builds (instead of 3.6.0)")
|
|
17
|
|
18 if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
19 set(TMP ON)
|
|
20 else()
|
|
21 set(TMP OFF)
|
|
22 endif()
|
|
23
|
|
24
|
|
25 # Advanced parameters to fine-tune linking against system libraries
|
|
26 SET(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost")
|
|
27 SET(USE_SYSTEM_CURL ON CACHE BOOL "Use the system version of LibCurl")
|
|
28 SET(USE_SYSTEM_DCMTK ON CACHE BOOL "Use the system version of DCMTK")
|
|
29 SET(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp")
|
|
30 SET(USE_SYSTEM_LIBJPEG ON CACHE BOOL "Use the system version of libjpeg")
|
|
31 SET(USE_SYSTEM_LIBPNG ON CACHE BOOL "Use the system version of libpng")
|
|
32 SET(USE_SYSTEM_LIBTIFF ON CACHE BOOL "Use the system version of libtiff")
|
|
33 SET(USE_SYSTEM_OPENJPEG ON CACHE BOOL "Use the system version of OpenJpeg")
|
|
34 SET(USE_SYSTEM_OPENSSL ON CACHE BOOL "Use the system version of OpenSSL")
|
|
35 SET(USE_SYSTEM_ZLIB ON CACHE BOOL "Use the system version of ZLib")
|
|
36
|
|
37 SET(DCMTK_DICTIONARY_DIR "" CACHE PATH "Directory containing the DCMTK dictionaries \"dicom.dic\" and \"private.dic\" (only when using system version of DCMTK)")
|
|
38
|
|
39
|
|
40 #####################################################################
|
|
41 ## Configure mandatory third-party components
|
|
42 #####################################################################
|
|
43
|
|
44 SET(ORTHANC_WSI_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
|
|
45 SET(ORTHANC_ROOT ${ORTHANC_WSI_DIR}/Resources/Orthanc)
|
|
46 SET(USE_OPENJPEG_JP2 ON)
|
|
47 SET(ENABLE_JPEG OFF) # Disable DCMTK's support for JPEG, that clashes with libtiff
|
|
48 SET(ENABLE_JPEG_LOSSLESS OFF) # Disable DCMTK's support for JPEG-LS
|
|
49 SET(ENABLE_DCMTK_NETWORK OFF) # Disable DCMTK's support for DICOM networking
|
|
50 SET(STANDALONE_BUILD ON) # Embed DCMTK's dictionaries for static builds
|
|
51 SET(USE_DCMTK_361_PRIVATE_DIC OFF) # No need for private tags
|
|
52
|
|
53 include(CheckIncludeFiles)
|
|
54 include(CheckIncludeFileCXX)
|
|
55 include(CheckLibraryExists)
|
|
56 include(FindPythonInterp)
|
|
57 include(FindPkgConfig)
|
|
58 include(CheckSymbolExists)
|
|
59
|
|
60 include(${ORTHANC_ROOT}/Resources/CMake/Compiler.cmake)
|
|
61 include(${ORTHANC_ROOT}/Resources/CMake/AutoGeneratedCode.cmake)
|
|
62 include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
|
|
63 include(${ORTHANC_ROOT}/Resources/CMake/VisualStudioPrecompiledHeaders.cmake)
|
|
64
|
|
65 # Third-party components shipped with Orthanc
|
|
66 include(${ORTHANC_ROOT}/Resources/CMake/DcmtkConfiguration.cmake)
|
|
67 include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake)
|
|
68 include(${ORTHANC_ROOT}/Resources/CMake/LibCurlConfiguration.cmake)
|
|
69 include(${ORTHANC_ROOT}/Resources/CMake/LibJpegConfiguration.cmake)
|
|
70 include(${ORTHANC_ROOT}/Resources/CMake/LibPngConfiguration.cmake)
|
|
71 include(${ORTHANC_ROOT}/Resources/CMake/ZlibConfiguration.cmake)
|
|
72
|
|
73 # Include components specific to WSI
|
|
74 include(${ORTHANC_WSI_DIR}/Resources/CMake/Version.cmake)
|
|
75 include(${ORTHANC_WSI_DIR}/Resources/CMake/BoostExtendedConfiguration.cmake)
|
|
76 include(${ORTHANC_WSI_DIR}/Resources/CMake/OpenJpegConfiguration.cmake)
|
|
77 include(${ORTHANC_WSI_DIR}/Resources/CMake/LibTiffConfiguration.cmake)
|
|
78
|
|
79 add_definitions(
|
|
80 -DORTHANC_ENABLE_BASE64=1
|
|
81 -DORTHANC_ENABLE_CURL=1
|
|
82 -DORTHANC_ENABLE_DCMTK=1
|
|
83 -DORTHANC_ENABLE_LOGGING=1
|
|
84 -DORTHANC_ENABLE_MD5=0
|
|
85 -DORTHANC_ENABLE_JPEG=0 # Disable DCMTK's support for JPEG
|
|
86 -DORTHANC_ENABLE_PKCS11=0
|
|
87 -DORTHANC_ENABLE_PLUGINS=1 # To enable class Orthanc::SharedLibrary
|
|
88 -DORTHANC_ENABLE_PUGIXML=0
|
|
89 -DORTHANC_SANDBOXED=0
|
|
90 )
|
|
91
|
|
92
|
|
93 #####################################################################
|
|
94 ## Configure optional third-party components
|
|
95 #####################################################################
|
|
96
|
|
97 if (ENABLE_SSL)
|
|
98 set(ENABLE_PKCS11 OFF)
|
|
99 add_definitions(-DORTHANC_ENABLE_SSL=1)
|
|
100 include(${ORTHANC_ROOT}/Resources/CMake/OpenSslConfiguration.cmake)
|
|
101 else()
|
|
102 add_definitions(-DORTHANC_ENABLE_SSL=0)
|
|
103 endif()
|
|
104
|
|
105
|
|
106 #####################################################################
|
|
107 ## Create the list of the source files that depend upon the
|
|
108 ## precompiled headers
|
|
109 #####################################################################
|
|
110
|
|
111 set(ORTHANC_WSI_SOURCES
|
|
112 ${ORTHANC_WSI_DIR}/Framework/Algorithms/PyramidReader.cpp
|
|
113 ${ORTHANC_WSI_DIR}/Framework/Algorithms/ReconstructPyramidCommand.cpp
|
|
114 ${ORTHANC_WSI_DIR}/Framework/Algorithms/TranscodeTileCommand.cpp
|
|
115 ${ORTHANC_WSI_DIR}/Framework/DicomToolbox.cpp
|
|
116 ${ORTHANC_WSI_DIR}/Framework/DicomizerParameters.cpp
|
|
117 ${ORTHANC_WSI_DIR}/Framework/Enumerations.cpp
|
|
118 ${ORTHANC_WSI_DIR}/Framework/ImageToolbox.cpp
|
|
119 ${ORTHANC_WSI_DIR}/Framework/ImagedVolumeParameters.cpp
|
|
120 ${ORTHANC_WSI_DIR}/Framework/Inputs/DecodedTiledPyramid.cpp
|
|
121 ${ORTHANC_WSI_DIR}/Framework/Inputs/DicomPyramid.cpp
|
|
122 ${ORTHANC_WSI_DIR}/Framework/Inputs/DicomPyramidInstance.cpp
|
|
123 ${ORTHANC_WSI_DIR}/Framework/Inputs/DicomPyramidLevel.cpp
|
|
124 ${ORTHANC_WSI_DIR}/Framework/Inputs/HierarchicalTiff.cpp
|
|
125 ${ORTHANC_WSI_DIR}/Framework/Inputs/OpenSlideLibrary.cpp
|
|
126 ${ORTHANC_WSI_DIR}/Framework/Inputs/OpenSlidePyramid.cpp
|
|
127 ${ORTHANC_WSI_DIR}/Framework/Inputs/PyramidWithRawTiles.cpp
|
|
128 ${ORTHANC_WSI_DIR}/Framework/Inputs/SingleLevelDecodedPyramid.cpp
|
|
129 ${ORTHANC_WSI_DIR}/Framework/Inputs/TiledPyramidStatistics.cpp
|
|
130 ${ORTHANC_WSI_DIR}/Framework/Jpeg2000Reader.cpp
|
|
131 ${ORTHANC_WSI_DIR}/Framework/Jpeg2000Writer.cpp
|
|
132 ${ORTHANC_WSI_DIR}/Framework/Targets/FolderTarget.cpp
|
|
133 ${ORTHANC_WSI_DIR}/Framework/Targets/OrthancTarget.cpp
|
|
134 ${ORTHANC_WSI_DIR}/Framework/Outputs/DicomPyramidWriter.cpp
|
|
135 ${ORTHANC_WSI_DIR}/Framework/Outputs/HierarchicalTiffWriter.cpp
|
|
136 ${ORTHANC_WSI_DIR}/Framework/Outputs/InMemoryTiledImage.cpp
|
|
137 ${ORTHANC_WSI_DIR}/Framework/Outputs/MultiframeDicomWriter.cpp
|
|
138 ${ORTHANC_WSI_DIR}/Framework/Outputs/PyramidWriterBase.cpp
|
|
139 ${ORTHANC_WSI_DIR}/Framework/Outputs/TruncatedPyramidWriter.cpp
|
|
140 )
|
|
141
|
|
142 set(ORTHANC_CORE_SOURCES
|
|
143 ${ORTHANC_ROOT}/Core/ChunkedBuffer.cpp
|
|
144 ${ORTHANC_ROOT}/Core/DicomFormat/DicomArray.cpp
|
|
145 ${ORTHANC_ROOT}/Core/DicomFormat/DicomMap.cpp
|
|
146 ${ORTHANC_ROOT}/Core/DicomFormat/DicomTag.cpp
|
|
147 ${ORTHANC_ROOT}/Core/DicomFormat/DicomValue.cpp
|
|
148 ${ORTHANC_ROOT}/Core/Enumerations.cpp
|
|
149 ${ORTHANC_ROOT}/Core/HttpClient.cpp
|
|
150 ${ORTHANC_ROOT}/Core/Images/IImageWriter.cpp
|
|
151 ${ORTHANC_ROOT}/Core/Images/Image.cpp
|
|
152 ${ORTHANC_ROOT}/Core/Images/ImageAccessor.cpp
|
|
153 ${ORTHANC_ROOT}/Core/Images/ImageBuffer.cpp
|
|
154 ${ORTHANC_ROOT}/Core/Images/ImageProcessing.cpp
|
|
155 ${ORTHANC_ROOT}/Core/Images/JpegErrorManager.cpp
|
|
156 ${ORTHANC_ROOT}/Core/Images/JpegReader.cpp
|
|
157 ${ORTHANC_ROOT}/Core/Images/JpegWriter.cpp
|
|
158 ${ORTHANC_ROOT}/Core/Images/PngReader.cpp
|
|
159 ${ORTHANC_ROOT}/Core/Images/PngWriter.cpp
|
|
160 ${ORTHANC_ROOT}/Core/Logging.cpp
|
|
161 ${ORTHANC_ROOT}/Core/MultiThreading/BagOfTasksProcessor.cpp
|
|
162 ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp
|
|
163 ${ORTHANC_ROOT}/Core/SystemToolbox.cpp
|
|
164 ${ORTHANC_ROOT}/Core/TemporaryFile.cpp
|
|
165 ${ORTHANC_ROOT}/Core/Toolbox.cpp
|
|
166 ${ORTHANC_ROOT}/Core/WebServiceParameters.cpp
|
|
167 ${ORTHANC_ROOT}/OrthancServer/FromDcmtkBridge.cpp
|
|
168 ${ORTHANC_ROOT}/OrthancServer/ServerEnumerations.cpp
|
|
169 ${ORTHANC_ROOT}/OrthancServer/ToDcmtkBridge.cpp
|
|
170 ${ORTHANC_ROOT}/Plugins/Engine/SharedLibrary.cpp
|
|
171 ${ORTHANC_ROOT}/Resources/ThirdParty/base64/base64.cpp
|
|
172 )
|
|
173
|
|
174 EmbedResources(
|
|
175 ${DCMTK_DICTIONARIES}
|
|
176 BRIGHTFIELD_OPTICAL_PATH ${ORTHANC_WSI_DIR}/Resources/BrightfieldOpticalPath.json
|
|
177 SAMPLE_DATASET ${ORTHANC_WSI_DIR}/Resources/SampleDataset.json
|
|
178 SRGB_ICC_PROFILE ${ORTHANC_WSI_DIR}/Resources/sRGB.icc
|
|
179 )
|
|
180
|
|
181
|
|
182 #####################################################################
|
|
183 ## Setup precompiled headers for Microsoft Visual Studio
|
|
184 #####################################################################
|
|
185
|
|
186 if (MSVC)
|
|
187 add_definitions(-DORTHANC_USE_PRECOMPILED_HEADERS=1)
|
|
188
|
|
189 ADD_VISUAL_STUDIO_PRECOMPILED_HEADERS(
|
|
190 "PrecompiledHeaders.h" "${ORTHANC_WSI_DIR}/Framework/Orthanc/Core/PrecompiledHeaders.cpp" ORTHANC_CORE_SOURCES)
|
|
191
|
|
192 ADD_VISUAL_STUDIO_PRECOMPILED_HEADERS(
|
|
193 "PrecompiledHeadersWSI.h" "${ORTHANC_WSI_DIR}/Framework/PrecompiledHeadersWSI.cpp" ORTHANC_WSI_SOURCES)
|
|
194
|
|
195 source_group(ThirdParty\\OrthancCore FILES ${ORTHANC_CORE_SOURCES})
|
|
196 endif()
|
|
197
|
|
198
|
|
199 #####################################################################
|
|
200 ## Build a hello world
|
|
201 #####################################################################
|
|
202
|
|
203 add_executable(Hello
|
|
204 ${ORTHANC_CORE_SOURCES}
|
|
205 ${ORTHANC_WSI_SOURCES}
|
|
206 ${AUTOGENERATED_SOURCES}
|
|
207
|
|
208 # Mandatory components
|
|
209 ${BOOST_SOURCES}
|
|
210 ${CURL_SOURCES}
|
|
211 ${DCMTK_SOURCES}
|
|
212 ${JSONCPP_SOURCES}
|
|
213 ${LIBJPEG_SOURCES}
|
|
214 ${LIBPNG_SOURCES}
|
|
215 ${LIBTIFF_SOURCES}
|
|
216 ${OPENJPEG_SOURCES}
|
|
217 ${ZLIB_SOURCES}
|
|
218
|
|
219 # Optional components
|
|
220 ${OPENSSL_SOURCES}
|
|
221
|
|
222 ${ORTHANC_ROOT}/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp
|
|
223 ${ORTHANC_ROOT}/Plugins/Samples/Common/DicomDatasetReader.cpp
|
|
224 ${ORTHANC_ROOT}/Plugins/Samples/Common/DicomPath.cpp
|
|
225 ${ORTHANC_ROOT}/Plugins/Samples/Common/DicomTag.cpp
|
|
226 ${ORTHANC_ROOT}/Plugins/Samples/Common/FullOrthancDataset.cpp
|
|
227 ${ORTHANC_ROOT}/Plugins/Samples/Common/IOrthancConnection.cpp
|
|
228 ${ORTHANC_ROOT}/Plugins/Samples/Common/OrthancHttpConnection.cpp
|
|
229 ${ORTHANC_ROOT}/Plugins/Samples/Common/OrthancPluginConnection.cpp
|
|
230 ${ORTHANC_ROOT}/Plugins/Samples/Common/SimplifiedOrthancDataset.cpp
|
|
231
|
|
232 Hello.cpp
|
|
233 ${ORTHANC_WSI_DIR}/Applications/ApplicationToolbox.cpp
|
|
234
|
|
235 ${DICOMIZER_RESOURCES}
|
|
236 )
|
|
237
|
|
238 add_definitions(-DHAS_ORTHANC_EXCEPTION=1)
|
|
239
|
|
240 target_link_libraries(Hello ${DCMTK_LIBRARIES})
|