Mercurial > hg > orthanc-python
diff CMakeLists.txt @ 0:7ed502b17b8f
initial commit
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 26 Mar 2020 18:47:01 +0100 |
parents | |
children | e3128420249d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CMakeLists.txt Thu Mar 26 18:47:01 2020 +0100 @@ -0,0 +1,94 @@ +cmake_minimum_required(VERSION 2.8) +project(OrthancPython) + +set(PLUGIN_VERSION "mainline") + + +set(PYTHON_VERSION "3.6" CACHE STRING "Version of Python to be used") +set(PYTHON_WINDOWS_ROOT "" CACHE STRING "") +set(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost") +set(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp") +set(USE_LEGACY_JSONCPP OFF CACHE BOOL "Use the old branch 0.x.y of JsonCpp, that does not require a C++11 compiler (for LSB and old versions of Visual Studio)") +set(USE_SYSTEM_ORTHANC_SDK ON CACHE BOOL "Use the system version of the Orthanc plugin SDK") + + +include(CheckIncludeFile) +include(CheckIncludeFileCXX) +include(CheckIncludeFiles) +include(CheckLibraryExists) + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + set(PYTHON_INCLUDE_DIRS ${PYTHON_WINDOWS_ROOT}/include) + set(PYTHON_LIBRARIES ${PYTHON_WINDOWS_ROOT}/libs/libpython27.a) + +else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(PYTHON_1 python-${PYTHON_VERSION}-embed) + + if (PYTHON_1_FOUND) + set(PYTHON_INCLUDE_DIRS ${PYTHON_1_INCLUDE_DIRS}) + set(PYTHON_LIBRARIES ${PYTHON_1_LIBRARIES}) + else() + pkg_check_modules(PYTHON_2 REQUIRED python-${PYTHON_VERSION}) + set(PYTHON_INCLUDE_DIRS ${PYTHON_2_INCLUDE_DIRS}) + set(PYTHON_LIBRARIES ${PYTHON_2_LIBRARIES}) + endif() +endif() + +set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/Resources/Orthanc) +include(${ORTHANC_ROOT}/Resources/CMake/Compiler.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/BoostConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake) + +if (STATIC_BUILD OR NOT USE_SYSTEM_ORTHANC_SDK) + include_directories( + ${ORTHANC_ROOT}/Sdk-1.5.7 + ) +else() + CHECK_INCLUDE_FILE_CXX(orthanc/OrthancCPlugin.h HAVE_ORTHANC_H) + if (NOT HAVE_ORTHANC_H) + message(FATAL_ERROR "Please install the headers of the Orthanc plugins SDK") + endif() +endif() + +add_definitions( + -DHAS_ORTHANC_EXCEPTION=0 + ) + +include_directories( + ${ORTHANC_ROOT}/Plugins/Include + ${ORTHANC_ROOT}/Plugins/Samples/Common + ${PYTHON_INCLUDE_DIRS} + ) + +add_library(OrthancPython SHARED + ${BOOST_SOURCES} + ${JSONCPP_SOURCES} + ${ORTHANC_ROOT}/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp + Sources/Autogenerated/sdk.cpp + Sources/OnChangeCallback.cpp + Sources/OnStoredInstanceCallback.cpp + Sources/Plugin.cpp + Sources/PythonFunction.cpp + Sources/PythonLock.cpp + Sources/PythonModule.cpp + Sources/PythonObject.cpp + Sources/PythonString.cpp + Sources/RestCallbacks.cpp + ) + +target_link_libraries(OrthancPython ${PYTHON_LIBRARIES}) + +add_definitions(-DPLUGIN_VERSION="${PLUGIN_VERSION}") + +set_target_properties(OrthancPython PROPERTIES + VERSION ${PLUGIN_VERSION} + SOVERSION ${PLUGIN_VERSION} + ) + +install( + TARGETS OrthancPython + RUNTIME DESTINATION lib # Destination for Windows + LIBRARY DESTINATION share/orthanc/plugins # Destination for Linux + )