# HG changeset patch # User Sebastien Jodogne # Date 1379063458 -7200 # Node ID fe796b0538635d27159f0f9af625a86ebf6541ae # Parent eaca3d38b2aa551d7e336410c8a66a2ae06fdc6d conditional diff -r eaca3d38b2aa -r fe796b053863 CMakeLists.txt --- a/CMakeLists.txt Thu Sep 12 12:55:07 2013 +0200 +++ b/CMakeLists.txt Fri Sep 13 11:10:58 2013 +0200 @@ -17,6 +17,7 @@ SET(STANDALONE_BUILD ON CACHE BOOL "Standalone build (all the resources are embedded, necessary for releases)") SET(ENABLE_SSL ON CACHE BOOL "Include support for SSL") SET(BUILD_UNIT_TESTS ON CACHE BOOL "Build the unit tests") +SET(BUILD_CLIENT_LIBRARY ON CACHE BOOL "Build the client library") SET(DCMTK_DICTIONARY_DIR "/usr/share/dcmtk" CACHE PATH "Directory containing the DCMTK dictionaries \"dicom.dic\" and \"private.dic\" (ignored in standalone builds)") # Advanced parameters (for Debian packaging) @@ -273,70 +274,82 @@ ## Create the standalone DLL containing the Orthanc Client API ##################################################################### -include_directories(${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw) +if (BUILD_CLIENT_LIBRARY) + include_directories(${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw) + + if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) + set(ORTHANC_CPP_CLIENT_AUX ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows32.def) + elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8) + set(ORTHANC_CPP_CLIENT_AUX ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows64.def) + else() + message(FATAL_ERROR "Support your platform here") + endif() + else() + set(ORTHANC_CPP_CLIENT_AUX ${OPENSSL_SOURCES}) + endif() -if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) - set(ORTHANC_CPP_CLIENT_AUX ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows32.def) - elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8) - set(ORTHANC_CPP_CLIENT_AUX ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows64.def) + add_library(OrthancClient SHARED + ${ORTHANC_ROOT}/Core/OrthancException.cpp + ${ORTHANC_ROOT}/Core/Enumerations.cpp + ${ORTHANC_ROOT}/Core/Toolbox.cpp + ${ORTHANC_ROOT}/Core/HttpClient.cpp + ${ORTHANC_ROOT}/Core/MultiThreading/ArrayFilledByThreads.cpp + ${ORTHANC_ROOT}/Core/MultiThreading/ThreadedCommandProcessor.cpp + ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp + ${ORTHANC_ROOT}/Core/FileFormats/PngReader.cpp + ${ORTHANC_ROOT}/OrthancCppClient/OrthancConnection.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Series.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Study.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Instance.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Patient.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Package/SharedLibrary.cpp + ${ORTHANC_ROOT}/Resources/sha1/sha1.cpp + ${ORTHANC_ROOT}/Resources/md5/md5.c + ${ORTHANC_ROOT}/Resources/base64/base64.cpp + ${ORTHANC_CPP_CLIENT_AUX} + ${THIRD_PARTY_SOURCES} + ${CURL_SOURCES} + ) + + if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + set_target_properties(OrthancClient + PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -Wl,--as-needed -Wl,--version-script=${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw/VersionScript.map" + ) + target_link_libraries(OrthancClient pthread) + elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + target_link_libraries(OrthancClient OpenSSL) + + if (${CMAKE_COMPILER_IS_GNUCXX}) + set_target_properties(OrthancClient + PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++" + ) + target_link_libraries(OrthancClient ws2_32) + else() + message(FATAL_ERROR "Support Visual Studio here") + endif() else() message(FATAL_ERROR "Support your platform here") endif() -else() - set(ORTHANC_CPP_CLIENT_AUX ${OPENSSL_SOURCES}) -endif() -add_library(OrthancClient SHARED - ${ORTHANC_ROOT}/Core/OrthancException.cpp - ${ORTHANC_ROOT}/Core/Enumerations.cpp - ${ORTHANC_ROOT}/Core/Toolbox.cpp - ${ORTHANC_ROOT}/Core/HttpClient.cpp - ${ORTHANC_ROOT}/Core/MultiThreading/ArrayFilledByThreads.cpp - ${ORTHANC_ROOT}/Core/MultiThreading/ThreadedCommandProcessor.cpp - ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp - ${ORTHANC_ROOT}/Core/FileFormats/PngReader.cpp - ${ORTHANC_ROOT}/OrthancCppClient/OrthancConnection.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Series.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Study.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Instance.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Patient.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Package/SharedLibrary.cpp - ${ORTHANC_ROOT}/Resources/sha1/sha1.cpp - ${ORTHANC_ROOT}/Resources/md5/md5.c - ${ORTHANC_ROOT}/Resources/base64/base64.cpp - ${ORTHANC_CPP_CLIENT_AUX} - ${THIRD_PARTY_SOURCES} - ${CURL_SOURCES} - ) + # Copy the header file of the client library to the build directory + add_custom_command( + TARGET OrthancClient PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${ORTHANC_ROOT}/OrthancCppClient/Package/AUTOGENERATED/OrthancCppClient.h + ${CMAKE_BINARY_DIR}) -if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set_target_properties(OrthancClient - PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -Wl,--as-needed -Wl,--version-script=${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw/VersionScript.map" + install( + TARGETS OrthancClient + LIBRARY DESTINATION lib ) - target_link_libraries(OrthancClient pthread) -elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - target_link_libraries(OrthancClient OpenSSL) - if (${CMAKE_COMPILER_IS_GNUCXX}) - set_target_properties(OrthancClient - PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++" - ) - target_link_libraries(OrthancClient ws2_32) - else() - message(FATAL_ERROR "Support Visual Studio here") - endif() -else() - message(FATAL_ERROR "Support your platform here") + install( + FILES ${CMAKE_BINARY_DIR}/OrthancCppClient.h + DESTINATION include/orthanc + ) endif() -# Copy the header file of the client library to the build directory -add_custom_command( - TARGET OrthancClient PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${ORTHANC_ROOT}/OrthancCppClient/Package/AUTOGENERATED/OrthancCppClient.h - ${CMAKE_BINARY_DIR}) - ##################################################################### ## Generate the documentation if Doxygen is present