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