Przeglądaj źródła

BUG: Add a custom FindDCMTK.cmake into Utilities/CMake and fix install rules associated with DCMTK/CMakeLists.txt.

Jean-Christophe Fillion-Robin 15 lat temu
rodzic
commit
b50301e56c
2 zmienionych plików z 214 dodań i 2 usunięć
  1. 6 2
      CMakeLists.txt
  2. 208 0
      Utilities/CMake/FindDCMTK.cmake

+ 6 - 2
CMakeLists.txt

@@ -31,8 +31,12 @@ SET(CTK_INSTALL_DOC_DIR "doc")
 
 #-----------------------------------------------------------------------------
 # Update CMake module path
-# 
-SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
+# Note: FindXXX.cmake script specific to utility should be copied into Utilities/CMake
+#
+SET(CMAKE_MODULE_PATH
+  "${CMAKE_CURRENT_SOURCE_DIR}/Utilities/CMake"
+  "${CMAKE_CURRENT_SOURCE_DIR}/CMake"
+  ${CMAKE_MODULE_PATH})
 
 #-----------------------------------------------------------------------------
 # Clear CTK_BASE_INCLUDE_DIRS and CTK_BASE_LIBRARIES

+ 208 - 0
Utilities/CMake/FindDCMTK.cmake

@@ -0,0 +1,208 @@
+# - find DCMTK libraries and applications
+#
+
+#  DCMTK_INCLUDE_DIR   - Directories to include to use DCMTK
+#  DCMTK_LIBRARIES     - Files to link against to use DCMTK
+#  DCMTK_FOUND         - If false, don't try to use DCMTK
+#  DCMTK_DIR           - (optional) Source directory for DCMTK
+#
+# DCMTK_DIR can be used to make it simpler to find the various include
+# directories and compiled libraries if you've just compiled it in the
+# source tree. Just set it to the root of the tree where you extracted
+# the source (default to /usr/include/dcmtk/)
+
+#=============================================================================
+# Copyright 2004-2009 Kitware, Inc.
+# Copyright 2009 Mathieu Malaterre <mathieu.malaterre@gmail.com>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distributed this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+#
+# Written for VXL by Amitha Perera.
+# Upgraded for GDCM by Mathieu Malaterre.
+# 
+
+IF( NOT DCMTK_FOUND )
+  SET( DCMTK_DIR "/usr/include/dcmtk/"
+    CACHE PATH "Root of DCMTK source tree (optional)." )
+  MARK_AS_ADVANCED( DCMTK_DIR )
+ENDIF( NOT DCMTK_FOUND )
+
+# Convenient debug macro
+SET(debug TRUE)
+MACRO(findDcmtkDebug cmake_var)
+  IF(debug)
+    MESSAGE(STATUS ${cmake_var}:"${${cmake_var}}")
+  ENDIF()
+ENDMACRO()
+
+
+FIND_PATH( DCMTK_config_INCLUDE_DIR osconfig.h
+  ${DCMTK_DIR}/config/include
+  ${DCMTK_DIR}/config
+  ${DCMTK_DIR}/include
+  ${DCMTK_DIR}/include/dcmtk
+)
+
+FIND_PATH( DCMTK_ofstd_INCLUDE_DIR ofstdinc.h
+  ${DCMTK_DIR}/ofstd/include
+  ${DCMTK_DIR}/ofstd
+  ${DCMTK_DIR}/include/ofstd
+  ${DCMTK_DIR}/include/dcmtk/ofstd
+)
+
+FIND_LIBRARY( DCMTK_ofstd_LIBRARY ofstd
+  ${DCMTK_DIR}/ofstd/libsrc
+  ${DCMTK_DIR}/ofstd/libsrc/Release
+  ${DCMTK_DIR}/ofstd/libsrc/Debug
+  ${DCMTK_DIR}/ofstd/Release
+  ${DCMTK_DIR}/ofstd/Debug
+  ${DCMTK_DIR}/lib
+)
+
+FIND_PATH( DCMTK_dcmdata_INCLUDE_DIR dctypes.h
+  ${DCMTK_DIR}/include/dcmdata
+  ${DCMTK_DIR}/include/dcmtk/dcmdata
+  ${DCMTK_DIR}/dcmdata
+  ${DCMTK_DIR}/dcmdata/include
+)
+
+FIND_LIBRARY( DCMTK_dcmdata_LIBRARY dcmdata
+  ${DCMTK_DIR}/dcmdata/libsrc
+  ${DCMTK_DIR}/dcmdata/libsrc/Release
+  ${DCMTK_DIR}/dcmdata/libsrc/Debug
+  ${DCMTK_DIR}/dcmdata/Release
+  ${DCMTK_DIR}/dcmdata/Debug
+  ${DCMTK_DIR}/lib
+)
+
+FIND_PATH( DCMTK_dcmimgle_INCLUDE_DIR dcmimage.h
+  ${DCMTK_DIR}/dcmimgle/include
+  ${DCMTK_DIR}/dcmimgle
+  ${DCMTK_DIR}/include/dcmimgle
+  ${DCMTK_DIR}/include/dcmtk/dcmimgle
+)
+
+FIND_LIBRARY( DCMTK_dcmimgle_LIBRARY dcmimgle
+  ${DCMTK_DIR}/dcmimgle/libsrc
+  ${DCMTK_DIR}/dcmimgle/libsrc/Release
+  ${DCMTK_DIR}/dcmimgle/libsrc/Debug
+  ${DCMTK_DIR}/dcmimgle/Release
+  ${DCMTK_DIR}/dcmimgle/Debug
+  ${DCMTK_DIR}/lib
+)
+
+# MM: I could not find this library on debian system / dcmtk 3.5.4
+FIND_LIBRARY(DCMTK_imagedb_LIBRARY imagedb 
+  ${DCMTK_DIR}/imagectn/libsrc/Release
+  ${DCMTK_DIR}/imagectn/libsrc/
+  ${DCMTK_DIR}/imagectn/libsrc/Debug
+  )
+
+FIND_LIBRARY(DCMTK_dcmnet_LIBRARY dcmnet 
+  ${DCMTK_DIR}/dcmnet/libsrc/Release
+  ${DCMTK_DIR}/dcmnet/libsrc/Debug
+  ${DCMTK_DIR}/dcmnet/libsrc/
+  )
+
+IF( DCMTK_config_INCLUDE_DIR 
+    AND DCMTK_ofstd_INCLUDE_DIR 
+    AND DCMTK_ofstd_LIBRARY
+    AND DCMTK_dcmdata_INCLUDE_DIR
+    AND DCMTK_dcmdata_LIBRARY
+    AND DCMTK_dcmimgle_INCLUDE_DIR
+    AND DCMTK_dcmimgle_LIBRARY )
+
+  # Wrap library is required on Linux
+#   IF(NOT WIN32)
+#     FIND_LIBRARY(DCMTK_wrap_LIBRARY wrap
+#       /usr/lib
+#       /lib
+#       /usr/local/lib)
+#     MESSAGE(DCMTK_wrap_LIBRARY:${DCMTK_wrap_LIBRARY})
+#     IF(NOT DCMTK_wrap_LIBRARY)
+#       MESSAGE(FATAL_ERROR "error: Wrap library is required to use DCMTK. "
+#                           "On Ubuntu, you could install it using 'sudo apt-get libwrap0'")
+#     ENDIF()
+#   ENDIF()
+  
+  SET( DCMTK_FOUND "YES" )
+  SET( DCMTK_INCLUDE_DIR
+    ${DCMTK_config_INCLUDE_DIR}
+    ${DCMTK_ofstd_INCLUDE_DIR}
+    ${DCMTK_dcmdata_INCLUDE_DIR}
+    ${DCMTK_dcmimgle_INCLUDE_DIR}
+  )
+
+  SET( DCMTK_LIBRARIES
+    ${DCMTK_dcmimgle_LIBRARY}
+    ${DCMTK_dcmdata_LIBRARY}
+    ${DCMTK_ofstd_LIBRARY}
+    ${DCMTK_config_LIBRARY}
+  )
+
+  IF(DCMTK_imagedb_LIBRARY)
+   SET( DCMTK_LIBRARIES
+   ${DCMTK_LIBRARIES}
+   ${DCMTK_imagedb_LIBRARY}
+   )
+  ENDIF(DCMTK_imagedb_LIBRARY)
+
+  IF(DCMTK_dcmnet_LIBRARY)
+   SET( DCMTK_LIBRARIES
+   ${DCMTK_LIBRARIES}
+   ${DCMTK_dcmnet_LIBRARY}
+   )
+  ENDIF(DCMTK_dcmnet_LIBRARY)
+
+  IF( WIN32 )
+    SET( DCMTK_LIBRARIES ${DCMTK_LIBRARIES} netapi32 )
+  ENDIF( WIN32 )
+  
+#   IF (NOT WIN32)
+#     SET( DCMTK_LIBRARIES ${DCMTK_LIBRARIES} ${DCMTK_wrap_LIBRARY} )
+#   ENDIF()
+
+ENDIF( DCMTK_config_INCLUDE_DIR 
+    AND DCMTK_ofstd_INCLUDE_DIR 
+    AND DCMTK_ofstd_LIBRARY
+    AND DCMTK_dcmdata_INCLUDE_DIR
+    AND DCMTK_dcmdata_LIBRARY
+    AND DCMTK_dcmimgle_INCLUDE_DIR
+    AND DCMTK_dcmimgle_LIBRARY )
+
+FIND_PROGRAM(DCMTK_DCMDUMP_EXECUTABLE dcmdump
+  ${DCMTK_DIR}/bin
+  )
+
+FIND_PROGRAM(DCMTK_DCMDJPEG_EXECUTABLE dcmdjpeg
+  ${DCMTK_DIR}/bin
+  )
+
+FIND_PROGRAM(DCMTK_DCMDRLE_EXECUTABLE dcmdrle
+  ${DCMTK_DIR}/bin
+  )
+
+MARK_AS_ADVANCED(
+  DCMTK_DCMDUMP_EXECUTABLE
+  DCMTK_DCMDJPEG_EXECUTABLE
+  DCMTK_DCMDRLE_EXECUTABLE
+  DCMTK_config_INCLUDE_DIR
+  DCMTK_dcmdata_INCLUDE_DIR
+  DCMTK_dcmdata_LIBRARY
+  DCMTK_dcmimgle_INCLUDE_DIR
+  DCMTK_dcmimgle_LIBRARY
+  DCMTK_imagedb_LIBRARY 
+  DCMTK_dcmnet_LIBRARY
+  DCMTK_ofstd_INCLUDE_DIR
+  DCMTK_ofstd_LIBRARY
+  )
+