CMakeLists.txt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. project(CTKDICOMCore)
  2. #
  3. # See CTK/CMake/ctkMacroBuildLib.cmake for details
  4. #
  5. set(KIT_export_directive "CTK_DICOM_CORE_EXPORT")
  6. # determine the DCMTK version we're using
  7. if(EXISTS ${DCMTK_config_INCLUDE_DIR}/cfunix.h)
  8. set(_DCMTK_CONFIG_HEADER ${DCMTK_config_INCLUDE_DIR}/cfunix.h)
  9. elseif(EXISTS ${DCMTK_config_INCLUDE_DIR}/osconfig.h)
  10. set(_DCMTK_CONFIG_HEADER ${DCMTK_config_INCLUDE_DIR}/osconfig.h)
  11. else()
  12. message(SEND_ERROR "DCMTK version cannot be determined!")
  13. endif()
  14. file(READ ${_DCMTK_CONFIG_HEADER} _DCMTK_CONFIG)
  15. # simple check, we do not expect anything else
  16. if(_DCMTK_CONFIG MATCHES "PACKAGE_VERSION_NUMBER 360")
  17. set(DCMTK_VERSION_IS_360 1)
  18. message(STATUS "Detected DCMTK 3.6.0, will include backported SCU")
  19. endif()
  20. # Source files
  21. set(KIT_SRCS
  22. ctkDICOMAbstractThumbnailGenerator.cpp
  23. ctkDICOMAbstractThumbnailGenerator.h
  24. ctkDICOMDatabase.cpp
  25. ctkDICOMDatabase.h
  26. ctkDICOMItem.h
  27. ctkDICOMFilterProxyModel.cpp
  28. ctkDICOMFilterProxyModel.h
  29. ctkDICOMIndexer.cpp
  30. ctkDICOMIndexer.h
  31. ctkDICOMIndexer_p.h
  32. ctkDICOMItem.cpp
  33. ctkDICOMItem.h
  34. ctkDICOMModel.cpp
  35. ctkDICOMModel.h
  36. ctkDICOMObjectModel.cpp
  37. ctkDICOMObjectModel.h
  38. ctkDICOMPersonName.cpp
  39. ctkDICOMPersonName.h
  40. ctkDICOMQuery.cpp
  41. ctkDICOMQuery.h
  42. ctkDICOMRetrieve.cpp
  43. ctkDICOMRetrieve.h
  44. ctkDICOMTester.cpp
  45. ctkDICOMTester.h
  46. ctkDICOMUtil.cpp
  47. ctkDICOMUtil.h
  48. )
  49. if(DCMTK_VERSION_IS_360)
  50. list(APPEND KIT_SRCS ctkDcmSCU.cc)
  51. endif(DCMTK_VERSION_IS_360)
  52. # Abstract class should not be wrapped !
  53. set_source_files_properties(
  54. ctkDICOMAbstractThumbnailGenerator.h
  55. WRAP_EXCLUDE
  56. )
  57. # Check if DCMTK provides 'dcmtk::log4cplus::Logger', if not fallback to 'log4cplus::Logger'.
  58. # Indeed, following DCMTK-3.6.1_20110519 (commit e39d190), log4cplus has been moved
  59. # into dcmtk::log4cplus namespace.
  60. include(CheckCXXSourceCompiles)
  61. set(CMAKE_REQUIRED_DEFINITIONS -DHAVE_CONFIG_H)
  62. set(CMAKE_REQUIRED_INCLUDES ${DCMTK_INCLUDE_DIRS})
  63. set(CMAKE_REQUIRED_LIBRARIES ${DCMTK_LIBRARIES})
  64. check_cxx_source_compiles(
  65. "#include <dcmtk/oflog/oflog.h>\nint main(int, char*[]){dcmtk::log4cplus::Logger logger; return 0;}"
  66. HAVE_DCMTK_LOG4CPLUS_LOGGER)
  67. if(HAVE_DCMTK_LOG4CPLUS_LOGGER)
  68. set_source_files_properties(
  69. ctkDICOMUtil.cpp
  70. PROPERTIES COMPILE_DEFINITIONS HAVE_DCMTK_LOG4CPLUS_LOGGER
  71. )
  72. endif()
  73. # Headers that should run through moc
  74. set(KIT_MOC_SRCS
  75. ctkDICOMAbstractThumbnailGenerator.h
  76. ctkDICOMDatabase.h
  77. ctkDICOMIndexer.h
  78. ctkDICOMIndexer_p.h
  79. ctkDICOMFilterProxyModel.h
  80. ctkDICOMModel.h
  81. ctkDICOMObjectModel.h
  82. ctkDICOMQuery.h
  83. ctkDICOMRetrieve.h
  84. ctkDICOMTester.h
  85. )
  86. # UI files
  87. set(KIT_UI_FORMS
  88. )
  89. # Resources
  90. set(KIT_resources
  91. Resources/ctkDICOMCore.qrc
  92. )
  93. # Target libraries - See CMake/ctkFunctionGetTargetLibraries.cmake
  94. # The following macro will read the target libraries from the file 'target_libraries.cmake'
  95. ctkFunctionGetTargetLibraries(KIT_target_libraries)
  96. # create a dcm query/retrieve service config file that points to the build dir
  97. set (DCMQRSCP_STORE_DIR ${CMAKE_CURRENT_BINARY_DIR}/Testing)
  98. configure_file( Resources/dcmqrscp.cfg.in dcmqrscp.cfg )
  99. set (DCMQRSCP_CONFIG ${CMAKE_CURRENT_BINARY_DIR}/dcmqrscp.cfg)
  100. ctkMacroBuildLib(
  101. NAME ${PROJECT_NAME}
  102. EXPORT_DIRECTIVE ${KIT_export_directive}
  103. SRCS ${KIT_SRCS}
  104. MOC_SRCS ${KIT_MOC_SRCS}
  105. UI_FORMS ${KIT_UI_FORMS}
  106. TARGET_LIBRARIES ${KIT_target_libraries}
  107. RESOURCES ${KIT_resources}
  108. LIBRARY_TYPE ${CTK_LIBRARY_MODE}
  109. )
  110. if(CTK_WRAP_PYTHONQT_FULL OR CTK_WRAP_PYTHONQT_LIGHT)
  111. ctkMacroBuildLibWrapper(
  112. TARGET ${PROJECT_NAME}
  113. SRCS ${KIT_SRCS}
  114. WRAPPER_LIBRARY_TYPE ${CTK_LIBRARY_MODE}
  115. )
  116. endif()
  117. # Plugins
  118. #if(CTK_BUILD_QTDESIGNER_PLUGINS)
  119. # add_subdirectory(Plugins)
  120. #endif()
  121. # Testing
  122. if(BUILD_TESTING)
  123. add_subdirectory(Testing)
  124. endif()