1
|
1 # TODO !
|
|
2
|
|
3 cmake_minimum_required(VERSION 2.8)
|
|
4
|
|
5 project(OrthancClient)
|
|
6
|
|
7 OrthancCppClient/OrthancConnection.cpp
|
|
8 OrthancCppClient/Study.cpp
|
|
9 OrthancCppClient/Series.cpp
|
|
10 OrthancCppClient/Instance.cpp
|
|
11 OrthancCppClient/Patient.cpp
|
|
12
|
|
13
|
|
14
|
|
15
|
|
16 #####################################################################
|
|
17 ## Create the standalone DLL containing the Orthanc Client API
|
|
18 #####################################################################
|
|
19
|
|
20 include_directories(${ORTHANC_ROOT}/OrthancCppClient/SharedLibrary/Laaw)
|
|
21
|
|
22 if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
23 if (CMAKE_CROSSCOMPILING)
|
|
24 # Remove the default "lib" prefix from "libOrthancClient.dll" if cross-compiling
|
|
25 set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
|
26
|
|
27 if (${CMAKE_SIZEOF_VOID_P} EQUAL 4)
|
|
28 set(ORTHANC_CPP_CLIENT_AUX ${ORTHANC_ROOT}/OrthancCppClient/SharedLibrary/AUTOGENERATED/Windows32.def)
|
|
29 elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8)
|
|
30 set(ORTHANC_CPP_CLIENT_AUX ${ORTHANC_ROOT}/OrthancCppClient/SharedLibrary/AUTOGENERATED/Windows64.def)
|
|
31 else()
|
|
32 message(FATAL_ERROR "Support your platform here")
|
|
33 endif()
|
|
34 else()
|
|
35 # Nothing to do if using Visual Studio
|
|
36 endif()
|
|
37
|
|
38 if (${CMAKE_SIZEOF_VOID_P} EQUAL 4)
|
|
39 set(CMAKE_SHARED_LIBRARY_SUFFIX "_Windows32.dll")
|
|
40 list(APPEND ORTHANC_CPP_CLIENT_AUX ${ORTHANC_ROOT}/OrthancCppClient/SharedLibrary/AUTOGENERATED/Windows32.rc)
|
|
41 elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8)
|
|
42 set(CMAKE_SHARED_LIBRARY_SUFFIX "_Windows64.dll")
|
|
43 list(APPEND ORTHANC_CPP_CLIENT_AUX ${ORTHANC_ROOT}/OrthancCppClient/SharedLibrary/AUTOGENERATED/Windows64.rc)
|
|
44 else()
|
|
45 message(FATAL_ERROR "Support your platform here")
|
|
46 endif()
|
|
47
|
|
48 else()
|
|
49 set(ORTHANC_CPP_CLIENT_AUX ${OPENSSL_SOURCES})
|
|
50 endif()
|
|
51
|
|
52 add_library(OrthancClient SHARED
|
|
53 ${ORTHANC_ROOT}/OrthancCppClient/OrthancCppClient.cpp
|
|
54 ${ORTHANC_ROOT}/OrthancCppClient/SharedLibrary/SharedLibrary.cpp
|
|
55 ${ORTHANC_ROOT}/Resources/ThirdParty/md5/md5.c
|
|
56 ${ORTHANC_ROOT}/Resources/ThirdParty/base64/base64.cpp
|
|
57 ${ORTHANC_CPP_CLIENT_AUX}
|
|
58 ${THIRD_PARTY_SOURCES}
|
|
59 ${CURL_SOURCES}
|
|
60 ${GOOGLE_LOG_SOURCES}
|
|
61 )
|
|
62
|
|
63 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR
|
|
64 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR
|
|
65 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
|
66 set_target_properties(OrthancClient
|
|
67 PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -Wl,--as-needed -Wl,--version-script=${ORTHANC_ROOT}/OrthancCppClient/SharedLibrary/Laaw/VersionScript.map"
|
|
68 )
|
|
69 target_link_libraries(OrthancClient pthread)
|
|
70
|
|
71 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
72 target_link_libraries(OrthancClient OpenSSL ws2_32)
|
|
73
|
|
74 if (CMAKE_CROSSCOMPILING)
|
|
75 set_target_properties(OrthancClient
|
|
76 PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++"
|
|
77 )
|
|
78 endif()
|
|
79
|
|
80 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
|
81 # TODO
|
|
82 target_link_libraries(OrthancClient pthread)
|
|
83
|
|
84 else()
|
|
85 message(FATAL_ERROR "Support your platform here")
|
|
86 endif()
|
|
87
|
|
88
|
|
89 # Set the version of the "Orthanc Client" shared library
|
|
90 file(STRINGS
|
|
91 ${CMAKE_SOURCE_DIR}/OrthancCppClient/SharedLibrary/Product.json
|
|
92 ORTHANC_CLIENT_VERSION_TMP
|
|
93 REGEX "^[ \t]*\"Version\"[ \t]*")
|
|
94
|
|
95 string(REGEX REPLACE "^.*\"([0-9]+)\\.([0-9]+)\\.([0-9]+)\"" "\\1.\\2"
|
|
96 ORTHANC_CLIENT_VERSION ${ORTHANC_CLIENT_VERSION_TMP})
|
|
97
|
|
98 message("Setting the version of the library to ${ORTHANC_CLIENT_VERSION}")
|
|
99
|
|
100 set_target_properties(OrthancClient PROPERTIES
|
|
101 VERSION ${ORTHANC_CLIENT_VERSION}
|
|
102 SOVERSION ${ORTHANC_CLIENT_VERSION})
|
|
103
|
|
104
|
|
105 install(
|
|
106 TARGETS OrthancClient
|
|
107 RUNTIME DESTINATION lib # Destination for Windows
|
|
108 LIBRARY DESTINATION lib # Destination for Linux
|
|
109 )
|
|
110
|
|
111 install(
|
|
112 FILES
|
|
113 ${ORTHANC_ROOT}/OrthancCppClient/SharedLibrary/AUTOGENERATED/OrthancCppClient.h
|
|
114 ${ORTHANC_ROOT}/Plugins/Include/OrthancCPlugin.h
|
|
115 ${ORTHANC_ROOT}/Plugins/Include/OrthancCDatabasePlugin.h
|
|
116 ${ORTHANC_ROOT}/Plugins/Include/OrthancCppDatabasePlugin.h
|
|
117 DESTINATION include/orthanc
|
|
118 )
|
|
119
|
|
120
|
|
121
|
|
122
|
|
123 #####################################################################
|
|
124 ## Generate the documentation if Doxygen is present
|
|
125 #####################################################################
|
|
126
|
|
127 find_package(Doxygen)
|
|
128 if (DOXYGEN_FOUND)
|
|
129 configure_file(
|
|
130 ${CMAKE_SOURCE_DIR}/Resources/OrthancClient.doxygen
|
|
131 ${CMAKE_CURRENT_BINARY_DIR}/OrthancClient.doxygen
|
|
132 @ONLY)
|
|
133
|
|
134 add_custom_command(TARGET OrthancClient
|
|
135 POST_BUILD
|
|
136 COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/OrthancClient.doxygen
|
|
137 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
138 COMMENT "Generating client documentation with Doxygen" VERBATIM
|
|
139 )
|
|
140
|
|
141 install(
|
|
142 DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/OrthancClientDocumentation/doc/
|
|
143 DESTINATION share/doc/orthanc/OrthancClient
|
|
144 )
|
|
145
|
|
146 else()
|
|
147 message("Doxygen not found. The documentation will not be built.")
|
|
148 endif()
|
|
149
|
|
150
|
|
151 #####################################################################
|
|
152 ## Prepare the "uninstall" target
|
|
153 ## http://www.cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
|
|
154 #####################################################################
|
|
155
|
|
156 configure_file(
|
|
157 "${CMAKE_CURRENT_SOURCE_DIR}/Resources/CMake/Uninstall.cmake.in"
|
|
158 "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
|
159 IMMEDIATE @ONLY)
|
|
160
|
|
161 add_custom_target(uninstall
|
|
162 COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|