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