Mercurial > hg > orthanc-client
annotate CMakeLists.txt @ 17:ae34bde412ae default tip
note
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 21 Dec 2016 11:05:16 +0100 |
parents | f7379096e014 |
children |
rev | line source |
---|---|
1 | 1 # TODO ! |
2 | |
3 cmake_minimum_required(VERSION 2.8) | |
4 | |
5 project(OrthancClient) | |
6 | |
3 | 7 |
8 # Parameters of the build | |
9 SET(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") | |
9 | 10 SET(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages") |
3 | 11 |
12 # Advanced parameters to fine-tune linking against system libraries | |
13 SET(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost") | |
14 SET(USE_SYSTEM_CURL ON CACHE BOOL "Use the system version of LibCurl") | |
15 SET(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test") | |
16 SET(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp") | |
17 SET(USE_SYSTEM_LIBPNG ON CACHE BOOL "Use the system version of LibPng") | |
18 SET(USE_SYSTEM_OPENSSL ON CACHE BOOL "Use the system version of OpenSSL") | |
19 SET(USE_SYSTEM_ZLIB ON CACHE BOOL "Use the system version of ZLib") | |
1 | 20 |
3 | 21 # Some basic inclusions |
22 SET(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/Orthanc) | |
23 SET(ENABLE_SSL ON) | |
14 | 24 SET(ENABLE_PLUGINS_VERSION_SCRIPT OFF) |
1 | 25 |
3 | 26 include(CheckIncludeFiles) |
27 include(CheckIncludeFileCXX) | |
28 include(CheckLibraryExists) | |
29 include(FindPythonInterp) | |
30 include(Orthanc/Resources/CMake/DownloadPackage.cmake) | |
31 include(Orthanc/Resources/CMake/Compiler.cmake) | |
32 | |
33 include(Orthanc/Resources/CMake/BoostConfiguration.cmake) | |
9 | 34 include(Orthanc/Resources/CMake/GoogleTestConfiguration.cmake) |
3 | 35 include(Orthanc/Resources/CMake/JsonCppConfiguration.cmake) |
9 | 36 include(Orthanc/Resources/CMake/LibCurlConfiguration.cmake) |
3 | 37 include(Orthanc/Resources/CMake/LibPngConfiguration.cmake) |
38 include(Orthanc/Resources/CMake/OpenSslConfiguration.cmake) | |
39 include(Orthanc/Resources/CMake/ZlibConfiguration.cmake) | |
40 | |
41 add_definitions(-DORTHANC_SSL_ENABLED=1) | |
1 | 42 |
43 | |
44 ##################################################################### | |
45 ## Create the standalone DLL containing the Orthanc Client API | |
46 ##################################################################### | |
47 | |
6 | 48 include_directories(Resources/Laaw) |
1 | 49 |
50 if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |
51 if (CMAKE_CROSSCOMPILING) | |
52 # Remove the default "lib" prefix from "libOrthancClient.dll" if cross-compiling | |
53 set(CMAKE_SHARED_LIBRARY_PREFIX "") | |
54 | |
55 if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) | |
9 | 56 set(ORTHANC_CPP_CLIENT_AUX SharedLibrary/AUTOGENERATED/Windows32.def) |
1 | 57 elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8) |
9 | 58 set(ORTHANC_CPP_CLIENT_AUX SharedLibrary/AUTOGENERATED/Windows64.def) |
1 | 59 else() |
60 message(FATAL_ERROR "Support your platform here") | |
61 endif() | |
62 else() | |
63 # Nothing to do if using Visual Studio | |
64 endif() | |
65 | |
66 if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) | |
67 set(CMAKE_SHARED_LIBRARY_SUFFIX "_Windows32.dll") | |
9 | 68 list(APPEND ORTHANC_CPP_CLIENT_AUX SharedLibrary/AUTOGENERATED/Windows32.rc) |
1 | 69 elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8) |
70 set(CMAKE_SHARED_LIBRARY_SUFFIX "_Windows64.dll") | |
9 | 71 list(APPEND ORTHANC_CPP_CLIENT_AUX SharedLibrary/AUTOGENERATED/Windows64.rc) |
1 | 72 else() |
73 message(FATAL_ERROR "Support your platform here") | |
74 endif() | |
75 | |
76 else() | |
77 set(ORTHANC_CPP_CLIENT_AUX ${OPENSSL_SOURCES}) | |
78 endif() | |
79 | |
14 | 80 add_definitions( |
81 -DORTHANC_ENABLE_MD5=0 | |
82 -DORTHANC_ENABLE_BASE64=0 | |
83 -DORTHANC_ENABLE_LOGGING=0 | |
84 ) | |
3 | 85 |
1 | 86 add_library(OrthancClient SHARED |
14 | 87 Orthanc/Core/ChunkedBuffer.cpp |
88 Orthanc/Core/Enumerations.cpp | |
3 | 89 Orthanc/Core/HttpClient.cpp |
14 | 90 Orthanc/Core/Images/ImageAccessor.cpp |
91 Orthanc/Core/Images/PngReader.cpp | |
3 | 92 Orthanc/Core/MultiThreading/SharedMessageQueue.cpp |
93 Orthanc/Core/Toolbox.cpp | |
94 | |
6 | 95 CppClient/Instance.cpp |
96 CppClient/OrthancConnection.cpp | |
97 CppClient/Patient.cpp | |
98 CppClient/Series.cpp | |
99 CppClient/Study.cpp | |
100 CppClient/ArrayFilledByThreads.cpp | |
101 CppClient/ThreadedCommandProcessor.cpp | |
102 | |
103 SharedLibrary/SharedLibrary.cpp | |
3 | 104 |
1 | 105 ${ORTHANC_CPP_CLIENT_AUX} |
106 ${THIRD_PARTY_SOURCES} | |
107 ${CURL_SOURCES} | |
108 ) | |
109 | |
3 | 110 |
9 | 111 add_executable(UnitTests |
112 CppClient/ArrayFilledByThreads.cpp | |
113 CppClient/ThreadedCommandProcessor.cpp | |
14 | 114 Orthanc/Core/Enumerations.cpp |
9 | 115 Orthanc/Core/MultiThreading/SharedMessageQueue.cpp |
14 | 116 Orthanc/Core/Toolbox.cpp |
9 | 117 UnitTestsSources/MultiThreadingTests.cpp |
118 UnitTestsSources/UnitTestsMain.cpp | |
119 | |
120 ${THIRD_PARTY_SOURCES} | |
121 ${GTEST_SOURCES} | |
122 ) | |
123 | |
124 | |
3 | 125 list(LENGTH OPENSSL_SOURCES OPENSSL_SOURCES_LENGTH) |
126 if (${OPENSSL_SOURCES_LENGTH} GREATER 0) | |
127 add_library(OpenSSL STATIC ${OPENSSL_SOURCES}) | |
128 target_link_libraries(OrthancClient OpenSSL) | |
129 endif() | |
130 | |
131 | |
1 | 132 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR |
133 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR | |
134 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") | |
135 set_target_properties(OrthancClient | |
6 | 136 PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -Wl,--as-needed -Wl,--version-script=${CMAKE_SOURCE_DIR}/Resources/Laaw/VersionScript.map" |
1 | 137 ) |
8
6d59828e2662
removal of Orthanc namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
6
diff
changeset
|
138 target_link_libraries(OrthancClient pthread dl) |
1 | 139 |
140 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |
3 | 141 target_link_libraries(OrthancClient ws2_32) |
1 | 142 |
143 if (CMAKE_CROSSCOMPILING) | |
144 set_target_properties(OrthancClient | |
145 PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++" | |
146 ) | |
147 endif() | |
148 | |
149 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") | |
150 # TODO | |
151 target_link_libraries(OrthancClient pthread) | |
152 | |
153 else() | |
154 message(FATAL_ERROR "Support your platform here") | |
155 endif() | |
156 | |
157 | |
158 # Set the version of the "Orthanc Client" shared library | |
159 file(STRINGS | |
6 | 160 ${CMAKE_SOURCE_DIR}/SharedLibrary/Product.json |
1 | 161 ORTHANC_CLIENT_VERSION_TMP |
162 REGEX "^[ \t]*\"Version\"[ \t]*") | |
163 | |
164 string(REGEX REPLACE "^.*\"([0-9]+)\\.([0-9]+)\\.([0-9]+)\"" "\\1.\\2" | |
165 ORTHANC_CLIENT_VERSION ${ORTHANC_CLIENT_VERSION_TMP}) | |
166 | |
167 message("Setting the version of the library to ${ORTHANC_CLIENT_VERSION}") | |
168 | |
169 set_target_properties(OrthancClient PROPERTIES | |
170 VERSION ${ORTHANC_CLIENT_VERSION} | |
171 SOVERSION ${ORTHANC_CLIENT_VERSION}) | |
172 | |
173 | |
174 install( | |
175 TARGETS OrthancClient | |
176 RUNTIME DESTINATION lib # Destination for Windows | |
177 LIBRARY DESTINATION lib # Destination for Linux | |
178 ) | |
179 | |
180 install( | |
181 FILES | |
9 | 182 SharedLibrary/AUTOGENERATED/CppClient.h |
1 | 183 DESTINATION include/orthanc |
184 ) | |
185 | |
186 | |
187 | |
188 | |
189 ##################################################################### | |
190 ## Generate the documentation if Doxygen is present | |
191 ##################################################################### | |
192 | |
193 find_package(Doxygen) | |
194 if (DOXYGEN_FOUND) | |
195 configure_file( | |
196 ${CMAKE_SOURCE_DIR}/Resources/OrthancClient.doxygen | |
197 ${CMAKE_CURRENT_BINARY_DIR}/OrthancClient.doxygen | |
198 @ONLY) | |
199 | |
200 add_custom_command(TARGET OrthancClient | |
201 POST_BUILD | |
202 COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/OrthancClient.doxygen | |
203 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} | |
204 COMMENT "Generating client documentation with Doxygen" VERBATIM | |
205 ) | |
206 | |
207 install( | |
208 DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/OrthancClientDocumentation/doc/ | |
209 DESTINATION share/doc/orthanc/OrthancClient | |
210 ) | |
211 | |
212 else() | |
213 message("Doxygen not found. The documentation will not be built.") | |
214 endif() | |
215 | |
216 | |
217 ##################################################################### | |
218 ## Prepare the "uninstall" target | |
219 ## http://www.cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F | |
220 ##################################################################### | |
221 | |
222 configure_file( | |
3 | 223 "${CMAKE_CURRENT_SOURCE_DIR}/Orthanc/Resources/CMake/Uninstall.cmake.in" |
1 | 224 "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" |
225 IMMEDIATE @ONLY) | |
226 | |
227 add_custom_target(uninstall | |
228 COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) |