Mercurial > hg > orthanc-webviewer
annotate CMakeLists.txt @ 183:3f62dac67971
fix
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 05 Jan 2018 09:54:08 +0100 |
parents | 55f8cf4ea237 |
children | 993dd140bd30 |
rev | line source |
---|---|
0 | 1 # Orthanc - A Lightweight, RESTful DICOM Store |
122 | 2 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
0 | 3 # Department, University Hospital of Liege, Belgium |
174
81f16c5667ba
upgrade to year 2018
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
172
diff
changeset
|
4 # Copyright (C) 2017-2018 Osimis S.A., Belgium |
0 | 5 # |
6 # This program is free software: you can redistribute it and/or | |
7 # modify it under the terms of the GNU Affero General Public License | |
8 # as published by the Free Software Foundation, either version 3 of | |
9 # the License, or (at your option) any later version. | |
10 # | |
11 # This program is distributed in the hope that it will be useful, but | |
12 # WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 # Affero General Public License for more details. | |
15 # | |
16 # You should have received a copy of the GNU Affero General Public License | |
17 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
18 | |
19 | |
20 cmake_minimum_required(VERSION 2.8) | |
21 | |
13 | 22 project(OrthancWebViewer) |
0 | 23 |
166
e5ac1fd6cf7d
fix mainline version
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
164
diff
changeset
|
24 set(ORTHANC_WEBVIEWER_VERSION "mainline") |
8 | 25 |
0 | 26 # Parameters of the build |
27 set(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") | |
28 SET(STANDALONE_BUILD ON CACHE BOOL "Standalone build (all the resources are embedded, necessary for releases)") | |
29 set(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages") | |
30 | |
31 # Advanced parameters to fine-tune linking against system libraries | |
32 set(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost") | |
33 set(USE_SYSTEM_GDCM ON CACHE BOOL "Use the system version of Grassroot DICOM (GDCM)") | |
34 set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test") | |
35 set(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp") | |
175 | 36 set(USE_SYSTEM_ORTHANC_SDK ON CACHE BOOL "Use the system version of the Orthanc plugin SDK") |
0 | 37 set(USE_SYSTEM_SQLITE ON CACHE BOOL "Use the system version of SQLite") |
175 | 38 set(USE_SYSTEM_UUID ON CACHE BOOL "Use the system version of the uuid library from e2fsprogs") |
0 | 39 |
40 # Distribution-specific settings | |
172 | 41 set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)") |
42 mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE) | |
0 | 43 |
26 | 44 set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/Orthanc) |
168 | 45 set(ENABLE_LOCALE OFF) # Disable support for locales (notably in Boost) |
176
55f8cf4ea237
support for Linux Standard Base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
175
diff
changeset
|
46 |
55f8cf4ea237
support for Linux Standard Base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
175
diff
changeset
|
47 if (NOT "${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase") |
55f8cf4ea237
support for Linux Standard Base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
175
diff
changeset
|
48 # The "patch" command-line tool is only needed for Boost and LSB |
55f8cf4ea237
support for Linux Standard Base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
175
diff
changeset
|
49 set(ORTHANC_DISABLE_PATCH ON) |
55f8cf4ea237
support for Linux Standard Base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
175
diff
changeset
|
50 endif() |
55f8cf4ea237
support for Linux Standard Base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
175
diff
changeset
|
51 |
175 | 52 include(CheckIncludeFile) |
0 | 53 include(CheckIncludeFiles) |
54 include(CheckIncludeFileCXX) | |
55 include(CheckLibraryExists) | |
17 | 56 include(FindPythonInterp) |
26 | 57 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/Compiler.cmake) |
58 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/AutoGeneratedCode.cmake) | |
59 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/DownloadPackage.cmake) | |
0 | 60 |
26 | 61 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/BoostConfiguration.cmake) |
62 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/GoogleTestConfiguration.cmake) | |
63 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/JsonCppConfiguration.cmake) | |
64 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/SQLiteConfiguration.cmake) | |
175 | 65 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/UuidConfiguration.cmake) |
26 | 66 |
0 | 67 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GdcmConfiguration.cmake) |
68 include(${CMAKE_SOURCE_DIR}/Resources/CMake/JavaScriptLibraries.cmake) | |
69 | |
70 | |
143
16f8471e3872
Performance warning if runtime debug assertions are turned on
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
139
diff
changeset
|
71 # Check that the Orthanc SDK headers are available |
68
45da32410346
USE_SYSTEM_ORTHANC_SDK option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
72 if (STATIC_BUILD OR NOT USE_SYSTEM_ORTHANC_SDK) |
111 | 73 include_directories(${ORTHANC_ROOT}/Sdk-0.9.5) |
0 | 74 else () |
75 CHECK_INCLUDE_FILE_CXX(orthanc/OrthancCPlugin.h HAVE_ORTHANC_H) | |
76 if (NOT HAVE_ORTHANC_H) | |
77 message(FATAL_ERROR "Please install the headers of the Orthanc plugins SDK") | |
78 endif() | |
79 endif() | |
80 | |
81 | |
82 if (STANDALONE_BUILD) | |
83 add_definitions( | |
84 -DORTHANC_STANDALONE=1 | |
85 ) | |
86 set(EMBEDDED_RESOURCES | |
87 WEB_VIEWER ${CMAKE_SOURCE_DIR}/WebApplication | |
88 ) | |
89 else() | |
90 add_definitions( | |
91 -DORTHANC_STANDALONE=0 | |
92 -DWEB_VIEWER_PATH="${CMAKE_SOURCE_DIR}/WebApplication/" | |
93 ) | |
94 endif() | |
95 | |
96 EmbedResources( | |
97 ORTHANC_EXPLORER ${CMAKE_SOURCE_DIR}/Resources/OrthancExplorer.js | |
98 JAVASCRIPT_LIBS ${JAVASCRIPT_LIBS_DIR} | |
99 ${EMBEDDED_RESOURCES} | |
100 ) | |
101 | |
102 add_definitions( | |
172 | 103 -DORTHANC_DEFAULT_DICOM_ENCODING=Encoding_Latin1 |
168 | 104 -DORTHANC_ENABLE_LOCALE=0 |
149 | 105 -DORTHANC_ENABLE_PUGIXML=0 |
172 | 106 -DORTHANC_ENABLE_SQLITE=1 |
0 | 107 -DORTHANC_SQLITE_STANDALONE=1 |
108 ) | |
109 | |
26 | 110 |
111 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR | |
112 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR | |
113 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") | |
114 link_libraries(rt) | |
115 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |
116 SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lws2_32") | |
45
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
117 |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
118 execute_process( |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
119 COMMAND |
48 | 120 ${PYTHON_EXECUTABLE} ${ORTHANC_ROOT}/Resources/WindowsResources.py |
45
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
121 ${ORTHANC_WEBVIEWER_VERSION} "OrthancWebViewer" OrthancWebViewer.dll "Web viewer of medical images for Orthanc" |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
122 ERROR_VARIABLE Failure |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
123 OUTPUT_FILE ${AUTOGENERATED_DIR}/Version.rc |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
124 ) |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
125 |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
126 if (Failure) |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
127 message(FATAL_ERROR "Error while computing the version information: ${Failure}") |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
128 endif() |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
129 |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
130 list(APPEND AUTOGENERATED_SOURCES ${AUTOGENERATED_DIR}/Version.rc) |
26 | 131 endif() |
132 | |
57 | 133 if (APPLE) |
134 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework CoreFoundation") | |
81 | 135 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -framework CoreFoundation") |
57 | 136 endif() |
60
902dedf9882a
removed unneccessary dependency on md5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
57
diff
changeset
|
137 |
902dedf9882a
removed unneccessary dependency on md5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
57
diff
changeset
|
138 add_definitions( |
902dedf9882a
removed unneccessary dependency on md5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
57
diff
changeset
|
139 -DORTHANC_ENABLE_MD5=0 |
902dedf9882a
removed unneccessary dependency on md5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
57
diff
changeset
|
140 -DORTHANC_ENABLE_BASE64=0 |
65 | 141 -DORTHANC_ENABLE_LOGGING=0 |
150 | 142 -DORTHANC_SANDBOXED=0 |
60
902dedf9882a
removed unneccessary dependency on md5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
57
diff
changeset
|
143 ) |
26 | 144 |
0 | 145 set(CORE_SOURCES |
146 ${BOOST_SOURCES} | |
175 | 147 ${JSONCPP_SOURCES} |
0 | 148 ${SQLITE_SOURCES} |
175 | 149 ${UUID_SOURCES} |
0 | 150 |
151 # Sources inherited from Orthanc core | |
26 | 152 ${CMAKE_SOURCE_DIR}/Orthanc/Core/ChunkedBuffer.cpp |
153 ${CMAKE_SOURCE_DIR}/Orthanc/Core/Enumerations.cpp | |
154 ${CMAKE_SOURCE_DIR}/Orthanc/Core/FileStorage/FilesystemStorage.cpp | |
79 | 155 ${CMAKE_SOURCE_DIR}/Orthanc/Core/Images/ImageAccessor.cpp |
156 ${CMAKE_SOURCE_DIR}/Orthanc/Core/Images/ImageBuffer.cpp | |
157 ${CMAKE_SOURCE_DIR}/Orthanc/Core/Images/ImageProcessing.cpp | |
26 | 158 ${CMAKE_SOURCE_DIR}/Orthanc/Core/MultiThreading/SharedMessageQueue.cpp |
159 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/Connection.cpp | |
160 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/FunctionContext.cpp | |
161 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/Statement.cpp | |
162 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/StatementId.cpp | |
163 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/StatementReference.cpp | |
164 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/Transaction.cpp | |
150 | 165 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SystemToolbox.cpp |
26 | 166 ${CMAKE_SOURCE_DIR}/Orthanc/Core/Toolbox.cpp |
133
3251ec958a29
Option "RestrictTransferSyntaxes" saying which transfer syntaxes should be decoded with GDCM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
122
diff
changeset
|
167 ${CMAKE_SOURCE_DIR}/Orthanc/Core/DicomFormat/DicomMap.cpp |
3251ec958a29
Option "RestrictTransferSyntaxes" saying which transfer syntaxes should be decoded with GDCM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
122
diff
changeset
|
168 ${CMAKE_SOURCE_DIR}/Orthanc/Core/DicomFormat/DicomTag.cpp |
3251ec958a29
Option "RestrictTransferSyntaxes" saying which transfer syntaxes should be decoded with GDCM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
122
diff
changeset
|
169 ${CMAKE_SOURCE_DIR}/Orthanc/Core/DicomFormat/DicomValue.cpp |
26 | 170 ${CMAKE_SOURCE_DIR}/Orthanc/Resources/ThirdParty/base64/base64.cpp |
0 | 171 |
172 ${CMAKE_SOURCE_DIR}/Plugin/Cache/CacheManager.cpp | |
173 ${CMAKE_SOURCE_DIR}/Plugin/Cache/CacheScheduler.cpp | |
174 ${CMAKE_SOURCE_DIR}/Plugin/ViewerToolbox.cpp | |
175 ${CMAKE_SOURCE_DIR}/Plugin/ViewerPrefetchPolicy.cpp | |
176 ${CMAKE_SOURCE_DIR}/Plugin/SeriesInformationAdapter.cpp | |
177 ) | |
178 | |
179 add_library(OrthancWebViewer | |
180 SHARED | |
181 ${CORE_SOURCES} | |
182 ${AUTOGENERATED_SOURCES} | |
183 ${CMAKE_SOURCE_DIR}/Plugin/Plugin.cpp | |
184 | |
185 # The following files depend on GDCM | |
186 ${CMAKE_SOURCE_DIR}/Plugin/DecodedImageAdapter.cpp | |
95
dbe7c97b6b4a
replace built-in decoder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
94
diff
changeset
|
187 ${CMAKE_SOURCE_DIR}/Orthanc/Plugins/Samples/GdcmDecoder/GdcmImageDecoder.cpp |
dbe7c97b6b4a
replace built-in decoder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
94
diff
changeset
|
188 ${CMAKE_SOURCE_DIR}/Orthanc/Plugins/Samples/GdcmDecoder/GdcmDecoderCache.cpp |
dbe7c97b6b4a
replace built-in decoder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
94
diff
changeset
|
189 ${CMAKE_SOURCE_DIR}/Orthanc/Plugins/Samples/GdcmDecoder/OrthancImageWrapper.cpp |
0 | 190 ) |
191 | |
26 | 192 |
0 | 193 if (STATIC_BUILD OR NOT USE_SYSTEM_GDCM) |
194 add_dependencies(OrthancWebViewer GDCM) | |
195 endif() | |
196 | |
26 | 197 target_link_libraries(OrthancWebViewer ${GDCM_LIBRARIES}) |
0 | 198 |
8 | 199 message("Setting the version of the library to ${ORTHANC_WEBVIEWER_VERSION}") |
12 | 200 |
201 add_definitions(-DORTHANC_WEBVIEWER_VERSION="${ORTHANC_WEBVIEWER_VERSION}") | |
202 | |
8 | 203 set_target_properties(OrthancWebViewer PROPERTIES |
204 VERSION ${ORTHANC_WEBVIEWER_VERSION} | |
205 SOVERSION ${ORTHANC_WEBVIEWER_VERSION}) | |
206 | |
0 | 207 install( |
8 | 208 TARGETS OrthancWebViewer |
209 RUNTIME DESTINATION lib # Destination for Windows | |
9 | 210 LIBRARY DESTINATION share/orthanc/plugins # Destination for Linux |
8 | 211 ) |
0 | 212 |
213 add_executable(UnitTests | |
214 ${CORE_SOURCES} | |
172 | 215 ${GOOGLE_TEST_SOURCES} |
30 | 216 ${JSONCPP_SOURCES} |
0 | 217 UnitTestsSources/UnitTestsMain.cpp |
218 ) | |
183 | 219 |
220 target_link_libraries(UnitTests ${GOOGLE_TEST_LIBRARIES}) |