This patch won't effect the Autoconf build system, and it is backwards compatible with the old-style find_package(DCMTK).
The rationale for doing this patch (beyond what I mention in the comment below) is that the FindDCMTK.cmake file included with CMake doesn't do a very good job of finding the CMake-generated DCMTK configuration. This new version properly 'pulls through' any dependencies like jpeg, tiff, zlib, etc.
Not to rush anyone but I have changes to ITK, BRAINS, and Slicer that are dependent on this patch. I could keep using our cloned repository and its patched branches, but this is a serious improvement on the functionality of DCMTK with respect to CMake, and should therefore have benefits outside the projects with which I'm concerned.
Thanks for your conisderation -- Kent Williams
Code: Select all
From 6e34cfaff6c0fefc958932f43f1c8649ed864570 Mon Sep 17 00:00:00 2001
From: Kent Williams <norman-k-williams@uiowa.edu>
Date: Wed, 13 Feb 2013 15:41:40 -0600
Subject: [PATCH] COMP: Add CMAKE code to generate comprehensive DCMTKConfig
files
Since CMake 2.6 (and in particular since 2.8) CMake supports a new signature for
find_package: find_package(<package_name> NO_MODULE)
NO_MODULE tells CMake to skip loading the Find<package>.cmake to locate a
package and use it. The big advantage for implementing this in a package like
DCMTK is that once it is properly implemented, a third-party library (like
DCMTK) can be used by other CMake projects without needing a Find<package>.cmake
file in the CMake installation.
This work in DCMTK is based on this tutorial:
http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file
along with assistance from Brad King (brad.king@kitware.com)
---
CMake/3rdparty.cmake | 468 +++++++++++++++++----------------
CMake/DCMTKBuildTreeSettings.cmake.in | 2 +
CMake/DCMTKConfig.cmake.in | 30 ++
CMake/DCMTKConfigVersion.cmake.in | 11 +
CMake/dcmtkMacros.cmake | 8 +-
CMake/dcmtkPrepare.cmake | 8 +
CMakeLists.txt | 152 +++++++++---
7 files changed, 410 insertions(+), 269 deletions(-)
create mode 100644 CMake/DCMTKBuildTreeSettings.cmake.in
create mode 100644 CMake/DCMTKConfigVersion.cmake.in
diff --git a/CMake/3rdparty.cmake b/CMake/3rdparty.cmake
index ed9e658..abb19f2 100755
--- a/CMake/3rdparty.cmake
+++ b/CMake/3rdparty.cmake
@@ -1,286 +1,292 @@
-IF(WIN32)
+if(WIN32)
# For Windows, we don't used FIND_PACKAGE because DCMTK usually is used with its
# own set of 3rd-party support libraries that can be downloaded from DCMTK's
# website (pre-built).
# libxml support: find out whether user has library
- GET_FILENAME_COMPONENT(LIBXML_DIR "${DCMTK_SOURCE_DIR}/../libxml2-2.7.7" ABSOLUTE)
- FIND_PATH(WITH_LIBXMLINC "/include/libxml/parser.h" "${LIBXML_DIR}"/ NO_DEFAULT_PATH)
+ get_filename_component(LIBXML_DIR "${DCMTK_SOURCE_DIR}/../libxml2-2.7.7" ABSOLUTE)
+ find_path(WITH_LIBXMLINC "/include/libxml/parser.h" "${LIBXML_DIR}"/ NO_DEFAULT_PATH)
# libpng support: find out whether user has library
- GET_FILENAME_COMPONENT(LIBPNG_DIR "${DCMTK_SOURCE_DIR}/../libpng-1.4.2" ABSOLUTE)
- FIND_PATH(WITH_LIBPNGINC "include/png.h" "${LIBPNG_DIR}" NO_DEFAULT_PATH)
+ get_filename_component(LIBPNG_DIR "${DCMTK_SOURCE_DIR}/../libpng-1.4.2" ABSOLUTE)
+ find_path(WITH_LIBPNGINC "include/png.h" "${LIBPNG_DIR}" NO_DEFAULT_PATH)
# libtiff support: find out whether user has library
- GET_FILENAME_COMPONENT(LIBTIFF_DIR "${DCMTK_SOURCE_DIR}/../tiff-3.9.2" ABSOLUTE)
- FIND_PATH(WITH_LIBTIFFINC "include/tiff.h" "${LIBTIFF_DIR}" NO_DEFAULT_PATH)
+ get_filename_component(LIBTIFF_DIR "${DCMTK_SOURCE_DIR}/../tiff-3.9.2" ABSOLUTE)
+ find_path(WITH_LIBTIFFINC "include/tiff.h" "${LIBTIFF_DIR}" NO_DEFAULT_PATH)
# OpenSSL support: find out whether user has library
- GET_FILENAME_COMPONENT(OPENSSL_DIR "${DCMTK_SOURCE_DIR}/../openssl-1.0.0" ABSOLUTE)
- FIND_PATH(WITH_OPENSSLINC "include/openssl/ssl.h" "${OPENSSL_DIR}" NO_DEFAULT_PATH)
+ get_filename_component(OPENSSL_DIR "${DCMTK_SOURCE_DIR}/../openssl-1.0.0" ABSOLUTE)
+ find_path(WITH_OPENSSLINC "include/openssl/ssl.h" "${OPENSSL_DIR}" NO_DEFAULT_PATH)
# zlib support: find out whether user has library
- GET_FILENAME_COMPONENT(ZLIB_DIR "${DCMTK_SOURCE_DIR}/../zlib-1.2.5" ABSOLUTE)
- FIND_PATH(WITH_ZLIBINC "include/zlib.h" "${ZLIB_DIR}" NO_DEFAULT_PATH)
+ get_filename_component(ZLIB_DIR "${DCMTK_SOURCE_DIR}/../zlib-1.2.5" ABSOLUTE)
+ find_path(WITH_ZLIBINC "include/zlib.h" "${ZLIB_DIR}" NO_DEFAULT_PATH)
# sndfile support: find out whether user has library. Needed for module dcmwave (not in public DCMTK yet, marked as advanced)
- GET_FILENAME_COMPONENT(SNDFILE_DIR "${DCMTK_SOURCE_DIR}/../libsndfile-1.0.17" ABSOLUTE)
- FIND_PATH(WITH_SNDFILEINC "sndfile.h" "${SNDFILE_DIR}" NO_DEFAULT_PATH)
+ get_filename_component(SNDFILE_DIR "${DCMTK_SOURCE_DIR}/../libsndfile-1.0.17" ABSOLUTE)
+ find_path(WITH_SNDFILEINC "sndfile.h" "${SNDFILE_DIR}" NO_DEFAULT_PATH)
MARK_AS_ADVANCED(SNDFILE_DIR WITH_SNDFILEINC)
# libiconv support: find out whether user has library
- GET_FILENAME_COMPONENT(LIBICONV_DIR "${DCMTK_SOURCE_DIR}/../libiconv-1.14" ABSOLUTE)
- FIND_PATH(WITH_LIBICONVINC "include/iconv.h" "${LIBICONV_DIR}" NO_DEFAULT_PATH)
+ get_filename_component(LIBICONV_DIR "${DCMTK_SOURCE_DIR}/../libiconv-1.14" ABSOLUTE)
+ find_path(WITH_LIBICONVINC "include/iconv.h" "${LIBICONV_DIR}" NO_DEFAULT_PATH)
# libxml support: configure compiler
- IF(DCMTK_WITH_XML)
- IF(WITH_LIBXMLINC)
- SET(LIBXML_INCDIR ${WITH_LIBXMLINC}/include)
- SET(LIBXML_LIBDIR ${WITH_LIBXMLINC}/lib)
- SET(LIBXML_LIBS debug ${LIBXML_LIBDIR}/libxml2_d.lib optimized ${LIBXML_LIBDIR}/libxml2_o.lib debug ${LIBXML_LIBDIR}/iconv_d.lib optimized ${LIBXML_LIBDIR}/iconv_o.lib)
- MESSAGE(STATUS "Info: DCMTK XML support will be enabled")
- SET(WITH_LIBXML 1)
- ELSE(WITH_LIBXMLINC) # turn off library if library path not set
- MESSAGE(STATUS "Warning: XML support will be disabled because libxml2 directory is not specified. Correct path and re-enable DCMTK_WITH_XML.")
- SET(DCMTK_WITH_XML OFF CACHE BOOL "" FORCE)
- SET(WITH_LIBXML "")
- ENDIF(WITH_LIBXMLINC)
- ENDIF(DCMTK_WITH_XML)
+ if(DCMTK_WITH_XML)
+ if(WITH_LIBXMLINC)
+ set(LIBXML_INCDIR ${WITH_LIBXMLINC}/include)
+ set(LIBXML_LIBDIR ${WITH_LIBXMLINC}/lib)
+ set(LIBXML_LIBS debug ${LIBXML_LIBDIR}/libxml2_d.lib optimized ${LIBXML_LIBDIR}/libxml2_o.lib debug ${LIBXML_LIBDIR}/iconv_d.lib optimized ${LIBXML_LIBDIR}/iconv_o.lib)
+ message(STATUS "Info: DCMTK XML support will be enabled")
+ set(WITH_LIBXML 1)
+ else() # turn off library if library path not set
+ message(STATUS "Warning: XML support will be disabled because libxml2 directory is not specified. Correct path and re-enable DCMTK_WITH_XML.")
+ set(DCMTK_WITH_XML OFF CACHE BOOL "" FORCE)
+ set(WITH_LIBXML "")
+ endif()
+ endif()
# libpng support: configure compiler
- IF(DCMTK_WITH_PNG)
- IF(WITH_LIBPNGINC)
- SET(LIBPNG_INCDIR ${WITH_LIBPNGINC}/include)
- SET(LIBPNG_LIBDIR ${WITH_LIBPNGINC}/lib)
- SET(LIBPNG_LIBS debug ${LIBPNG_LIBDIR}/libpng_d.lib optimized ${LIBPNG_LIBDIR}/libpng_o.lib)
- MESSAGE(STATUS "Info: DCMTK PNG support will be enabled")
- SET(WITH_LIBPNG 1)
- ELSE(WITH_LIBPNGINC) # turn off library if library path not set
- MESSAGE(STATUS "Warning: PNG support will be disabled because libpng directory was not specified. Correct path and re-enable DCMTK_WITH_PNG.")
- SET(DCMTK_WITH_PNG OFF CACHE BOOL "" FORCE)
- SET(WITH_LIBPNG "")
- ENDIF(WITH_LIBPNGINC)
- ENDIF(DCMTK_WITH_PNG)
+ if(DCMTK_WITH_PNG)
+ if(WITH_LIBPNGINC)
+ set(LIBPNG_INCDIR ${WITH_LIBPNGINC}/include)
+ set(LIBPNG_LIBDIR ${WITH_LIBPNGINC}/lib)
+ set(LIBPNG_LIBS debug ${LIBPNG_LIBDIR}/libpng_d.lib optimized ${LIBPNG_LIBDIR}/libpng_o.lib)
+ message(STATUS "Info: DCMTK PNG support will be enabled")
+ set(WITH_LIBPNG 1)
+ else() # turn off library if library path not set
+ message(STATUS "Warning: PNG support will be disabled because libpng directory was not specified. Correct path and re-enable DCMTK_WITH_PNG.")
+ set(DCMTK_WITH_PNG OFF CACHE BOOL "" FORCE)
+ set(WITH_LIBPNG "")
+ endif()
+ endif()
# libtiff support: configure compiler
- IF(DCMTK_WITH_TIFF)
- IF(WITH_LIBTIFFINC)
- SET(LIBTIFF_INCDIR ${WITH_LIBTIFFINC}/include)
- SET(LIBTIFF_LIBDIR ${WITH_LIBTIFFINC}/lib)
- SET(LIBTIFF_LIBS debug ${LIBTIFF_LIBDIR}/libtiff_d.lib optimized ${LIBTIFF_LIBDIR}/libtiff_o.lib)
- MESSAGE(STATUS "Info: DCMTK TIFF support will be enabled")
- SET(WITH_LIBTIFF 1)
- ELSE(WITH_LIBTIFFINC) # turn off library if library path not set
- MESSAGE(STATUS "Warning: TIFF support will be disabled because libtiff directory was not specified. Correct path and re-enable DCMTK_WITH_TIFF.")
- SET(DCMTK_WITH_TIFF OFF CACHE BOOL "" FORCE)
- SET(WITH_LIBTIFF "")
- ENDIF(WITH_LIBTIFFINC)
- ENDIF(DCMTK_WITH_TIFF)
+ if(DCMTK_WITH_TIFF)
+ if(WITH_LIBTIFFINC)
+ set(LIBTIFF_INCDIR ${WITH_LIBTIFFINC}/include)
+ set(LIBTIFF_LIBDIR ${WITH_LIBTIFFINC}/lib)
+ set(LIBTIFF_LIBS debug ${LIBTIFF_LIBDIR}/libtiff_d.lib optimized ${LIBTIFF_LIBDIR}/libtiff_o.lib)
+ message(STATUS "Info: DCMTK TIFF support will be enabled")
+ set(WITH_LIBTIFF 1)
+ else() # turn off library if library path not set
+ message(STATUS "Warning: TIFF support will be disabled because libtiff directory was not specified. Correct path and re-enable DCMTK_WITH_TIFF.")
+ set(DCMTK_WITH_TIFF OFF CACHE BOOL "" FORCE)
+ set(WITH_LIBTIFF "")
+ endif()
+ endif()
# OpenSSL support: configure compiler
- IF(DCMTK_WITH_OPENSSL)
- IF(WITH_OPENSSLINC)
- SET(OPENSSL_BINDIR ${WITH_OPENSSLINC}/bin)
- SET(OPENSSL_INCDIR ${WITH_OPENSSLINC}/include)
- SET(OPENSSL_LIBDIR ${WITH_OPENSSLINC}/lib)
- SET(OPENSSL_LIBS debug ${OPENSSL_LIBDIR}/dcmtkssl_d.lib optimized ${OPENSSL_LIBDIR}/dcmtkssl_o.lib debug ${OPENSSL_LIBDIR}/dcmtkeay_d.lib optimized ${OPENSSL_LIBDIR}/dcmtkeay_o.lib)
- MESSAGE(STATUS "Info: DCMTK OPENSSL support will be enabled")
- SET(WITH_OPENSSL 1)
- ELSE(WITH_OPENSSLINC) # turn off library if library path not set
- MESSAGE(STATUS "Warning: OPENSSL support will be disabled because openssl directory was not specified. Correct path and re-enable DCMTK_WITH_OPENSSL.")
- SET(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE)
- SET(WITH_OPENSSL "")
- ENDIF(WITH_OPENSSLINC)
- ENDIF(DCMTK_WITH_OPENSSL)
+ if(DCMTK_WITH_OPENSSL)
+ if(WITH_OPENSSLINC)
+ set(OPENSSL_BINDIR ${WITH_OPENSSLINC}/bin)
+ set(OPENSSL_INCDIR ${WITH_OPENSSLINC}/include)
+ set(OPENSSL_LIBDIR ${WITH_OPENSSLINC}/lib)
+ set(OPENSSL_LIBS debug ${OPENSSL_LIBDIR}/dcmtkssl_d.lib optimized ${OPENSSL_LIBDIR}/dcmtkssl_o.lib debug ${OPENSSL_LIBDIR}/dcmtkeay_d.lib optimized ${OPENSSL_LIBDIR}/dcmtkeay_o.lib)
+ message(STATUS "Info: DCMTK OPENSSL support will be enabled")
+ set(WITH_OPENSSL 1)
+ else() # turn off library if library path not set
+ message(STATUS "Warning: OPENSSL support will be disabled because openssl directory was not specified. Correct path and re-enable DCMTK_WITH_OPENSSL.")
+ set(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE)
+ set(WITH_OPENSSL "")
+ endif()
+ endif()
# zlib support: configure compiler
- IF(DCMTK_WITH_ZLIB)
- IF(WITH_ZLIBINC)
- SET(ZLIB_INCDIR ${WITH_ZLIBINC}/include)
- SET(ZLIB_LIBDIR ${WITH_ZLIBINC}/lib)
- SET(ZLIB_LIBS debug ${ZLIB_LIBDIR}/zlib_d.lib optimized ${ZLIB_LIBDIR}/zlib_o.lib)
- MESSAGE(STATUS "Info: DCMTK ZLIB support will be enabled")
- SET(WITH_ZLIB 1)
- ELSE(WITH_ZLIBINC) # turn off library if library path not set
- MESSAGE(STATUS "Warning: ZLIB support will be disabled because zlib directory was not specified. Correct path and re-enable DCMTK_WITH_ZLIB.")
- SET(DCMTK_WITH_ZLIB OFF CACHE BOOL "" FORCE)
- SET(WITH_ZLIB "")
- ENDIF(WITH_ZLIBINC)
- ENDIF(DCMTK_WITH_ZLIB)
+ if(DCMTK_WITH_ZLIB)
+ if(WITH_ZLIBINC)
+ set(ZLIB_INCDIR ${WITH_ZLIBINC}/include)
+ set(ZLIB_LIBDIR ${WITH_ZLIBINC}/lib)
+ set(ZLIB_LIBS debug ${ZLIB_LIBDIR}/zlib_d.lib optimized ${ZLIB_LIBDIR}/zlib_o.lib)
+ message(STATUS "Info: DCMTK ZLIB support will be enabled")
+ set(WITH_ZLIB 1)
+ else() # turn off library if library path not set
+ message(STATUS "Warning: ZLIB support will be disabled because zlib directory was not specified. Correct path and re-enable DCMTK_WITH_ZLIB.")
+ set(DCMTK_WITH_ZLIB OFF CACHE BOOL "" FORCE)
+ set(WITH_ZLIB "")
+ endif()
+ endif()
# sndfile support: configure compiler
- IF(DCMTK_WITH_SNDFILE)
- IF(WITH_SNDFILEINC)
- SET(SNDFILE_INCDIR ${WITH_SNDFILEINC}/include)
- SET(SNDFILE_LIBDIR ${WITH_SNDFILEINC}/lib)
- SET(SNDFILE_LIBS debug ${SNDFILE_LIBDIR}/libsndfile_d.lib optimized ${SNDFILE_LIBDIR}/libsndfile_o.lib)
- MESSAGE(STATUS "Info: DCMTK SNDFILE support will be enabled")
- SET(WITH_SNDFILE 1)
- ELSE(WITH_SNDFILEINC) # turn off library if library path not set
- MESSAGE(STATUS "Warning: SNDFILE support will be disabled because libsndfile directory was not specified. Correct path and re-enable DCMTK_WITH_SNDFILE.")
- SET(DCMTK_WITH_SNDFILE OFF CACHE BOOL "" FORCE)
- SET(WITH_SNDFILE "")
- ENDIF(WITH_SNDFILEINC)
- ENDIF(DCMTK_WITH_SNDFILE)
+ if(DCMTK_WITH_SNDFILE)
+ if(WITH_SNDFILEINC)
+ set(SNDFILE_INCDIR ${WITH_SNDFILEINC}/include)
+ set(SNDFILE_LIBDIR ${WITH_SNDFILEINC}/lib)
+ set(SNDFILE_LIBS debug ${SNDFILE_LIBDIR}/libsndfile_d.lib optimized ${SNDFILE_LIBDIR}/libsndfile_o.lib)
+ message(STATUS "Info: DCMTK SNDFILE support will be enabled")
+ set(WITH_SNDFILE 1)
+ else() # turn off library if library path not set
+ message(STATUS "Warning: SNDFILE support will be disabled because libsndfile directory was not specified. Correct path and re-enable DCMTK_WITH_SNDFILE.")
+ set(DCMTK_WITH_SNDFILE OFF CACHE BOOL "" FORCE)
+ set(WITH_SNDFILE "")
+ endif()
+ endif()
# libiconv support: configure compiler
- IF(DCMTK_WITH_ICONV)
- IF(WITH_LIBICONVINC)
- SET(LIBICONV_INCDIR ${WITH_LIBICONVINC}/include)
- SET(LIBICONV_LIBDIR ${WITH_LIBICONVINC}/lib)
- SET(LIBICONV_LIBS debug ${LIBICONV_LIBDIR}/libiconv_d.lib optimized ${LIBICONV_LIBDIR}/libiconv_o.lib)
- MESSAGE(STATUS "Info: DCMTK ICONV support will be enabled")
- SET(WITH_LIBICONV 1)
- ELSE(WITH_LIBICONVINC) # turn off library if library path not set
- MESSAGE(STATUS "Warning: ICONV support will be disabled because libiconv directory was not specified. Correct path and re-enable DCMTK_WITH_ICONV.")
- SET(DCMTK_WITH_ICONV OFF CACHE BOOL "" FORCE)
- SET(WITH_LIBICONV "")
- ENDIF(WITH_LIBICONVINC)
- ENDIF(DCMTK_WITH_ICONV)
+ if(DCMTK_WITH_ICONV)
+ if(WITH_LIBICONVINC)
+ set(LIBICONV_INCDIR ${WITH_LIBICONVINC}/include)
+ set(LIBICONV_LIBDIR ${WITH_LIBICONVINC}/lib)
+ set(LIBICONV_LIBS debug ${LIBICONV_LIBDIR}/libiconv_d.lib optimized ${LIBICONV_LIBDIR}/libiconv_o.lib)
+ message(STATUS "Info: DCMTK ICONV support will be enabled")
+ set(WITH_LIBICONV 1)
+ else() # turn off library if library path not set
+ message(STATUS "Warning: ICONV support will be disabled because libiconv directory was not specified. Correct path and re-enable DCMTK_WITH_ICONV.")
+ set(DCMTK_WITH_ICONV OFF CACHE BOOL "" FORCE)
+ set(WITH_LIBICONV "")
+ endif()
+ endif()
-ELSE(WIN32)
+else()
# Find TIFF
- IF(DCMTK_WITH_TIFF)
- FIND_PACKAGE(TIFF)
- INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIR})
- SET(LIBTIFF_LIBS ${TIFF_LIBRARY})
+ if(DCMTK_WITH_TIFF)
+ find_package(TIFF)
+ message("TIFF_FOUND=${TIFF_FOUND} TIFF_LIBRARY=${TIFF_LIBRARY}")
+ find_package(JPEG)
+ message("JPEG_FOUND=${JPEG_FOUND} JPEG_LIBRARY=${JPEG_LIBRARY}")
# turn off library if it could not be found
- IF(NOT LIBTIFF_LIBS)
- MESSAGE(STATUS "Warning: TIFF support will be disabled because libtiff was not found.")
- SET(DCMTK_WITH_TIFF OFF CACHE BOOL "" FORCE)
- SET(WITH_LIBTIFF "")
- ELSE(NOT LIBTIFF_LIBS)
- MESSAGE(STATUS "Info: DCMTK TIFF support will be enabled")
- SET(WITH_LIBTIFF 1)
- ENDIF(NOT LIBTIFF_LIBS)
- ENDIF(DCMTK_WITH_TIFF)
+ if(NOT TIFF_FOUND OR NOT JPEG_FOUND)
+ if(NOT TIFF_FOUND)
+ message(STATUS "Warning: TIFF support will be disabled because libtiff was not found.")
+ else()
+ message(STATUS "Warning: TIFF support will be disabled because libjpeg was not found.")
+ endif()
+ set(DCMTK_WITH_TIFF OFF CACHE BOOL "" FORCE)
+ set(WITH_LIBTIFF "")
+ else()
+ message(STATUS "Info: DCMTK TIFF support will be enabled")
+ set(WITH_LIBTIFF 1)
+ include_directories(${TIFF_INCLUDE_DIR})
+ set(LIBTIFF_LIBS ${TIFF_LIBRARY} ${JPEG_LIBRARY})
+ endif()
+ endif()
# Find PNG
- IF(DCMTK_WITH_PNG)
- FIND_PACKAGE(PNG)
- INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
- SET(LIBPNG_LIBS ${PNG_LIBRARY})
- IF(NOT LIBPNG_LIBS)
- SET(DCMTK_WITH_PNG OFF CACHE BOOL "" FORCE)
- MESSAGE(STATUS "Warning: PNG support will be disabled because libpng was not found.")
- SET(WITH_LIBPNG "")
- ELSE(NOT LIBPNG_LIBS)
- MESSAGE(STATUS "Info: DCMTK PNG support will be enabled")
- SET(WITH_LIBPNG 1)
- ENDIF(NOT LIBPNG_LIBS)
- ENDIF(DCMTK_WITH_PNG)
+ if(DCMTK_WITH_PNG)
+ find_package(PNG QUIET)
+ if(NOT PNG_FOUND)
+ set(DCMTK_WITH_PNG OFF CACHE BOOL "" FORCE)
+ message(STATUS "Warning: PNG support will be disabled because libpng was not found.")
+ set(WITH_LIBPNG "")
+ else()
+ message(STATUS "Info: DCMTK PNG support will be enabled")
+ set(WITH_LIBPNG 1)
+ include_directories(${PNG_INCLUDE_DIR})
+ set(LIBPNG_LIBS ${PNG_LIBRARY})
+ endif()
+ endif()
# Find OpenSSL
- IF(DCMTK_WITH_OPENSSL)
- FIND_PACKAGE(OpenSSL)
- INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
- SET(OPENSSL_LIBS ${OPENSSL_LIBRARIES})
- IF(NOT OPENSSL_LIBS)
- MESSAGE(STATUS "Warning: OPENSSL support will be disabled because openssl was not found.")
- SET(WITH_OPENSSL "")
- SET(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE)
- ELSE(NOT OPENSSL_LIBS)
- MESSAGE(STATUS "Info: DCMTK OPENSSL support will be enabled")
- SET(WITH_OPENSSL 1)
- ENDIF(NOT OPENSSL_LIBS)
- ENDIF(DCMTK_WITH_OPENSSL)
+ if(DCMTK_WITH_OPENSSL)
+ find_package(OpenSSL QUIET)
+ if(NOT OPENSSL_FOUND)
+ message(STATUS "Warning: OPENSSL support will be disabled because openssl was not found.")
+ set(WITH_OPENSSL "")
+ set(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE)
+ else()
+ message(STATUS "Info: DCMTK OPENSSL support will be enabled")
+ set(WITH_OPENSSL 1)
+ include_directories(${OPENSSL_INCLUDE_DIR})
+ set(OPENSSL_LIBS ${OPENSSL_LIBRARIES})
+ endif()
+ endif()
# Find libXML2
- IF(DCMTK_WITH_XML)
- FIND_PACKAGE(LibXml2)
- INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
- SET(LIBXML_LIBS ${LIBXML2_LIBRARIES})
- IF(NOT LIBXML_LIBS)
- MESSAGE(STATUS "Warning: XML support will be disabled because libxml2 was not found.")
- SET(WITH_LIBXML "")
- SET(DCMTK_WITH_XML OFF CACHE BOOL "" FORCE)
- ELSE(NOT LIBXML_LIBS)
- MESSAGE(STATUS "Info: DCMTK XML support will be enabled")
- SET(WITH_LIBXML 1)
- ENDIF(NOT LIBXML_LIBS)
- ENDIF(DCMTK_WITH_XML)
+ if(DCMTK_WITH_XML)
+ find_package(LibXml2 QUIET)
+ if(NOT LIBXML2_FOUND)
+ message(STATUS "Warning: XML support will be disabled because libxml2 was not found.")
+ set(WITH_LIBXML "")
+ set(DCMTK_WITH_XML OFF CACHE BOOL "" FORCE)
+ else()
+ message(STATUS "Info: DCMTK XML support will be enabled")
+ set(WITH_LIBXML 1)
+ include_directories(${LIBXML2_INCLUDE_DIR})
+ set(LIBXML_LIBS ${LIBXML2_LIBRARIES})
+ endif()
+ endif()
# Find zlib
- IF(DCMTK_WITH_ZLIB)
- FIND_PACKAGE(ZLIB)
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
- SET(ZLIB_LIBS ${ZLIB_LIBRARIES})
- IF(NOT ZLIB_LIBS)
- MESSAGE(STATUS "Warning: ZLIB support will be disabled because zlib was not found.")
- SET(WITH_ZLIB "")
- SET(DCMTK_WITH_ZLIB OFF CACHE BOOL "" FORCE)
- ELSE(NOT ZLIB_LIBS)
- MESSAGE(STATUS "Info: DCMTK ZLIB support will be enabled")
- SET(WITH_ZLIB 1)
- ENDIF(NOT ZLIB_LIBS)
- ENDIF(DCMTK_WITH_ZLIB)
+ if(DCMTK_WITH_ZLIB)
+ find_package(ZLIB QUIET)
+ if(NOT ZLIB_FOUND)
+ message(STATUS "Warning: ZLIB support will be disabled because zlib was not found.")
+ set(WITH_ZLIB "")
+ set(DCMTK_WITH_ZLIB OFF CACHE BOOL "" FORCE)
+ else()
+ message(STATUS "Info: DCMTK ZLIB support will be enabled")
+ set(WITH_ZLIB 1)
+ include_directories(${ZLIB_INCLUDE_DIRS})
+ set(ZLIB_LIBS ${ZLIB_LIBRARIES})
+ endif()
+ endif()
# Find libsndfile
- IF(DCMTK_WITH_SNDFILE)
- FIND_PACKAGE(Sndfile)
- INCLUDE_DIRECTORIES(${SNDFILE_INCLUDE_DIRS})
- SET(SNDFILE_LIBS ${SNDFILE_LIBRARIES})
- IF(NOT SNDFILE_LIBS)
- MESSAGE(STATUS "Warning: SNDFILE support will be disabled because libsndfile was not found.")
- SET(WITH_SNDFILE "")
- SET(DCMTK_WITH_SNDFILE OFF CACHE BOOL "" FORCE)
- ELSE(NOT SNDFILE_LIBS)
- MESSAGE(STATUS "Info: DCMTK SNDFILE support will be enabled")
- SET(WITH_SNDFILE 1)
- ENDIF(NOT SNDFILE_LIBS)
- ENDIF(DCMTK_WITH_SNDFILE)
+ if(DCMTK_WITH_SNDFILE)
+ find_package(Sndfile QUIET)
+ if(NOT SNDFILE_LIBS)
+ message(STATUS "Warning: SNDFILE support will be disabled because libsndfile was not found.")
+ set(WITH_SNDFILE "")
+ set(DCMTK_WITH_SNDFILE OFF CACHE BOOL "" FORCE)
+ else()
+ message(STATUS "Info: DCMTK SNDFILE support will be enabled")
+ set(WITH_SNDFILE 1)
+ include_directories(${SNDFILE_INCLUDE_DIRS})
+ set(SNDFILE_LIBS ${SNDFILE_LIBRARIES})
+ endif()
+ endif()
# Find libiconv
- IF(DCMTK_WITH_ICONV)
- FIND_PACKAGE(ICONV)
- FIND_PACKAGE(Charset)
-
- IF(LIBICONV_FOUND AND LIBCHARSET_FOUND)
- MESSAGE(STATUS "Info: DCMTK ICONV support will be enabled")
- SET(WITH_LIBICONV 1)
- SET(LIBICONV_INCDIR ${LIBICONV_INCLUDE_DIRS} ${LIBCHARSET_INCLUDE_DIRS})
- SET(LIBICONV_LIBDIR ${LIBICONV_LIBDIR})
- SET(LIBICONV_LIBS ${LIBICONV_LIBRARIES} ${LIBCHARSET_LIBRARY})
- INCLUDE_DIRECTORIES(${LIBICONV_INCDIR})
- ELSE(LIBICONV_FOUND AND LIBCHARSET_FOUND)
- MESSAGE(STATUS "Warning: ICONV support will be disabled because libiconv was not found. Correct LIBICONV_LIBDIR and LIBICONV_INCLUDE_DIR and re-enable DCMTK_WITH_ICONV.")
- SET(DCMTK_WITH_ICONV OFF CACHE BOOL "" FORCE)
- SET(WITH_LIBICONV "")
- ENDIF(LIBICONV_FOUND AND LIBCHARSET_FOUND)
- ENDIF(DCMTK_WITH_ICONV)
+ if(DCMTK_WITH_ICONV)
+ find_package(ICONV QUIET)
+ find_package(Charset QUIET)
+ if(NOT LIBICONV_FOUND OR NOT LIBCHARSET_FOUND)
+ message(STATUS "Warning: ICONV support will be disabled because libiconv was not found. Correct LIBICONV_LIBDIR and LIBICONV_INCLUDE_DIR and re-enable DCMTK_WITH_ICONV.")
+ set(DCMTK_WITH_ICONV OFF CACHE BOOL "" FORCE)
+ set(WITH_LIBICONV "")
+ else()
+ message(STATUS "Info: DCMTK ICONV support will be enabled")
+ set(WITH_LIBICONV 1)
+ set(LIBICONV_INCDIR ${LIBICONV_INCLUDE_DIRS} ${LIBCHARSET_INCLUDE_DIRS})
+ set(LIBICONV_LIBDIR ${LIBICONV_LIBDIR})
+ set(LIBICONV_LIBS ${LIBICONV_LIBRARIES} ${LIBCHARSET_LIBRARY})
+ include_directories(${LIBICONV_INCDIR})
+ endif()
+ endif()
# Find libwrap
- IF(DCMTK_WITH_WRAP)
- FIND_PACKAGE(Wrap)
- INCLUDE_DIRECTORIES(${WRAP_INCLUDE_DIRS})
- SET(WRAP_LIBS ${WRAP_LIBRARIES})
- IF(NOT WRAP_LIBS)
- MESSAGE(STATUS "Warning: WRAP support will be disabled because libwrap was not found.")
- SET(WITH_TCPWRAPPER "")
- SET(DCMTK_WITH_WRAP OFF CACHE BOOL "" FORCE)
- ELSE(NOT WRAP_LIBS)
- MESSAGE(STATUS "Info: DCMTK WRAP support will be enabled")
- SET(WITH_TCPWRAPPER 1)
- ENDIF(NOT WRAP_LIBS)
- ENDIF(DCMTK_WITH_WRAP)
+ if(DCMTK_WITH_WRAP)
+ find_package(Wrap QUIET)
+ if(NOT WRAP_FOUND)
+ message(STATUS "Warning: WRAP support will be disabled because libwrap was not found.")
+ set(WITH_TCPWRAPPER "")
+ set(DCMTK_WITH_WRAP OFF CACHE BOOL "" FORCE)
+ else()
+ message(STATUS "Info: DCMTK WRAP support will be enabled")
+ set(WITH_TCPWRAPPER 1)
+ include_directories(${WRAP_INCLUDE_DIRS})
+ set(WRAP_LIBS ${WRAP_LIBRARIES})
+ endif()
+ endif()
-ENDIF(WIN32)
+endif()
# Find doxygen
-IF(DCMTK_WITH_DOXYGEN)
- FIND_PACKAGE(Doxygen) # will set variable DOXYGEN_EXECUTABLE
- IF(NOT DOXYGEN_EXECUTABLE)
- MESSAGE(STATUS "Warning: DOXYGEN support will be disabled because doxygen was not found.")
- SET(DCMTK_WITH_DOXYGEN OFF CACHE BOOL "" FORCE)
- ENDIF(NOT DOXYGEN_EXECUTABLE)
-ENDIF(DCMTK_WITH_DOXYGEN)
+if(DCMTK_WITH_DOXYGEN)
+ find_package(Doxygen) # will set variable DOXYGEN_EXECUTABLE
+ if(NOT DOXYGEN_FOUND)
+ message(STATUS "Warning: DOXYGEN support will be disabled because doxygen was not found.")
+ set(DCMTK_WITH_DOXYGEN OFF CACHE BOOL "" FORCE)
+ endif()
+endif()
-IF(DCMTK_WITH_ICONV)
- INCLUDE(CheckCXXSourceCompiles)
- SET(CMAKE_REQUIRED_INCLUDES ${LIBICONV_INCDIR})
- SET(CMAKE_REQUIRED_LIBRARIES ${LIBICONV_LIBS})
+if(DCMTK_WITH_ICONV)
+ include(CheckCXXSourceCompiles)
+ set(CMAKE_REQUIRED_INCLUDES ${LIBICONV_INCDIR})
+ set(CMAKE_REQUIRED_LIBRARIES ${LIBICONV_LIBS})
CHECK_CXX_SOURCE_COMPILES("
#include <iconv.h>
int main() {
@@ -289,6 +295,6 @@ IF(DCMTK_WITH_ICONV)
iconv(cd, &in, 0, 0, 0);
return 0;
}" LIBICONV_SECOND_ARGUMENT_CONST)
- SET(CMAKE_REQUIRED_INCLUDES)
- SET(CMAKE_REQUIRED_LIBRARIES)
-ENDIF(DCMTK_WITH_ICONV)
+ set(CMAKE_REQUIRED_INCLUDES)
+ set(CMAKE_REQUIRED_LIBRARIES)
+endif()
diff --git a/CMake/DCMTKBuildTreeSettings.cmake.in b/CMake/DCMTKBuildTreeSettings.cmake.in
new file mode 100644
index 0000000..7026128
--- /dev/null
+++ b/CMake/DCMTKBuildTreeSettings.cmake.in
@@ -0,0 +1,2 @@
+set(DCMTK_INCLUDE_DIRS
+ "@DCMTK_INCLUDE_DIR@")
diff --git a/CMake/DCMTKConfig.cmake.in b/CMake/DCMTKConfig.cmake.in
index 99a1ea6..dbadc32 100644
--- a/CMake/DCMTKConfig.cmake.in
+++ b/CMake/DCMTKConfig.cmake.in
@@ -26,3 +26,33 @@ SET(DCMTK_SINGLE_SHARED_LIBRARY @BUILD_SINGLE_SHARED_LIBRARY@)
SET(DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS @DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS@)
SET(DCMTK_WIDE_CHAR_FILE_IO_FUNCTIONS @DCMTK_WIDE_CHAR_FILE_IO_FUNCTIONS@)
SET(DCMTK_WIDE_CHAR_MAIN_FUNCTION @DCMTK_WIDE_CHAR_MAIN_FUNCTION@)
+
+get_filename_component(DCMTK_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+set(DCMTK_INCLUDE_DIR_LIST "@DCMTK_MODULES_W_INCLUDE@")
+
+@DCMTKCONFIG_INCLUDE_DIR_CODE@
+
+include("${DCMTK_CMAKE_DIR}/DCMTKLibraryDepends.cmake")
+
+set(DCMTK_LIBRARIES charls
+dcmimage
+dcmjpls
+dcmqrdb
+dcmtls
+ijg12
+oflog
+dcmdata
+dcmimgle
+dcmnet
+dcmrt
+dcmwlm
+ijg16
+ofstd
+dcmdsig
+dcmjpeg
+dcmpstat
+dcmsr
+i2d
+ijg8
+)
diff --git a/CMake/DCMTKConfigVersion.cmake.in b/CMake/DCMTKConfigVersion.cmake.in
new file mode 100644
index 0000000..5d53321
--- /dev/null
+++ b/CMake/DCMTKConfigVersion.cmake.in
@@ -0,0 +1,11 @@
+set(PACKAGE_VERSION "@DCMTK_MAJOR_VERSION@.@DCMTK_MINOR_VERSION@.@DCMTK_BUILD_VERSION@")
+
+# Check whether the requested PACKAGE_FIND_VERSION is compatible
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif()
+endif()
diff --git a/CMake/dcmtkMacros.cmake b/CMake/dcmtkMacros.cmake
index 1a3c772..57d14fe 100644
--- a/CMake/dcmtkMacros.cmake
+++ b/CMake/dcmtkMacros.cmake
@@ -62,10 +62,10 @@ MACRO(DCMTK_ADD_LIBRARY LIBRARY)
IF(NOT BUILD_SINGLE_SHARED_LIBRARY)
# Declare installation files
INSTALL(TARGETS ${LIBRARY}${DCMTK_LIBRARY_SUFFIX}
- COMPONENT lib
- RUNTIME DESTINATION ${DCMTK_INSTALL_BINDIR}
- LIBRARY DESTINATION ${DCMTK_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${DCMTK_INSTALL_LIBDIR})
+ EXPORT DCMTKLibraryDepends
+ RUNTIME DESTINATION ${INSTALL_BIN_DIR} COMPONENT bin
+ LIBRARY DESTINATION ${INSTALL_LIB_DIR}/lib COMPONENT shlib
+ ARCHIVE DESTINATION ${INSTALL_LIB_DIR}/lib COMPONENT lib)
ENDIF(NOT BUILD_SINGLE_SHARED_LIBRARY)
ENDMACRO(DCMTK_ADD_LIBRARY)
diff --git a/CMake/dcmtkPrepare.cmake b/CMake/dcmtkPrepare.cmake
index d36e935..09ffb12 100644
--- a/CMake/dcmtkPrepare.cmake
+++ b/CMake/dcmtkPrepare.cmake
@@ -13,6 +13,14 @@ IF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 2.8.10)
SET(CMAKE_BACKWARDS_COMPATIBILITY 2.8.10 CACHE STRING "Latest version of CMake when this project was released." FORCE)
ENDIF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 2.8.10)
+# make sure CMAKE_BUILD_TYPE has a value. default to release
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+ message(STATUS "Setting build type to 'Release' as none was specified.")
+ set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
+ # Set the possible values of build type for cmake-gui
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
+endif()
+
# Basic version information
# (Starting with version 3.5.5, an odd number at the last position indicates
# a development snapshot and an even number indicates an official release.)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index db1e219..a1c7af0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,50 +12,78 @@ INCLUDE(CMake/dcmtkPrepare.cmake NO_POLICY_SCOPE)
#-----------------------------------------------------------------------------
# Modules to be built
-SET(DCMTK_MODULES config ofstd oflog dcmdata dcmimgle dcmimage dcmjpeg dcmjpls dcmtls dcmnet dcmsr dcmsign dcmwlm dcmqrdb dcmpstat dcmrt doxygen
- CACHE STRING "List of modules that should be built.")
-MARK_AS_ADVANCED(DCMTK_MODULES)
+SET(DCMTK_LIBS ofstd oflog dcmdata dcmimgle
+ dcmimage dcmjpeg dcmjpls dcmtls dcmnet dcmsr
+ dcmsign dcmwlm dcmqrdb dcmpstat dcmrt)
+
+SET(DCMTK_MODULES config doxygen ofstd oflog dcmdata dcmimgle
+ dcmimage dcmjpeg dcmjpls dcmtls dcmnet dcmsr
+ dcmsign dcmwlm dcmqrdb dcmpstat dcmrt)
+
+set(DCMTK_LIBRARIES ${DCMTK_LIBS} ijg8 ijg12 ijg16 charls dcmdsig)
#-----------------------------------------------------------------------------
# Include directories
#-----------------------------------------------------------------------------
-
-SET(DCMTK_INCLUDE_DIR
- ${DCMTK_BINARY_DIR}/config/include
- ${DCMTK_SOURCE_DIR}/ofstd/include
- ${DCMTK_SOURCE_DIR}/oflog/include
- ${DCMTK_SOURCE_DIR}/dcmdata/include
- ${DCMTK_SOURCE_DIR}/dcmimgle/include
- ${DCMTK_SOURCE_DIR}/dcmimage/include
- ${DCMTK_SOURCE_DIR}/dcmjpeg/libijg8
- ${DCMTK_SOURCE_DIR}/dcmjpeg/libijg12
- ${DCMTK_SOURCE_DIR}/dcmjpeg/libijg16
- ${DCMTK_SOURCE_DIR}/dcmjpeg/include
- ${DCMTK_SOURCE_DIR}/dcmjpls/include
- ${DCMTK_SOURCE_DIR}/dcmnet/include
- ${DCMTK_SOURCE_DIR}/dcmpstat/include
- ${DCMTK_SOURCE_DIR}/dcmqrdb/include
- ${DCMTK_SOURCE_DIR}/dcmsign/include
- ${DCMTK_SOURCE_DIR}/dcmsr/include
- ${DCMTK_SOURCE_DIR}/dcmtls/include
- ${DCMTK_SOURCE_DIR}/dcmwlm/include
+set(DCMTK_MODULES_W_INCLUDE
+ config
+ ofstd
+ oflog
+ dcmdata
+ dcmimgle
+ dcmimage
+ dcmjpeg
+ dcmjpeg
+ dcmjpeg
+ dcmjpeg
+ dcmjpls
+ dcmnet
+ dcmpstat
+ dcmqrdb
+ dcmsign
+ dcmsr
+ dcmtls
+ dcmwlm
)
+
+SET(DCMTK_INCLUDE_DIR)
+foreach(inc ${DCMTK_MODULES_W_INCLUDE})
+ if(inc STREQUAL config)
+ list(APPEND DCMTK_INCLUDE_DIR ${DCMTK_BINARY_DIR}/config/include)
+ else()
+ list(APPEND DCMTK_INCLUDE_DIR ${DCMTK_SOURCE_DIR}/${inc}/include)
+ endif()
+endforeach()
+
INCLUDE_DIRECTORIES(${DCMTK_INCLUDE_DIR})
+# set paths for install -- empty initially
+# Offer the user the choice of overriding the installation directories
+set(INSTALL_BIN_DIR CACHE PATH "Installation directory for libraries")
+set(INSTALL_LIB_DIR CACHE PATH "Installation directory for libraries")
+set(INSTALL_INCLUDE_DIR CACHE PATH "Installation directory for include")
+# set suffix for CMake files used for packaging
+if(WIN32 AND NOT CYGWIN)
+ set(INSTALL_CMAKE_DIR cmake)
+else()
+ set(INSTALL_CMAKE_DIR lib/cmake/dcmtk)
+endif()
+
+# Make relative paths absolute (needed later)
+foreach(p LIB BIN INCLUDE CMAKE)
+ set(var INSTALL_${p}_DIR)
+ if(NOT IS_ABSOLUTE "${${var}}")
+ set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+ endif()
+endforeach()
+
#-----------------------------------------------------------------------------
# Prepare osconfig.h
#-----------------------------------------------------------------------------
# add the osconfig.h.in file
CONFIGURE_FILE(${DCMTK_SOURCE_DIR}/CMake/osconfig.h.in
- ${DCMTK_BINARY_DIR}/config/include/dcmtk/config/osconfig.h)
-
-#-----------------------------------------------------------------------------
-# Write current configuration to file (for external projects)
-#-----------------------------------------------------------------------------
-
-CONFIGURE_FILE(${DCMTK_SOURCE_DIR}/CMake/DCMTKConfig.cmake.in
- ${DCMTK_BINARY_DIR}/DCMTKConfig.cmake @ONLY)
+ ${DCMTK_BINARY_DIR}/config/include/dcmtk/config/osconfig.h)
#-----------------------------------------------------------------------------
# Start actual compilation tasks
@@ -68,6 +96,58 @@ ENDFOREACH(module)
INCLUDE(CMake/dcmtkAfterModules.cmake NO_POLICY_SCOPE)
#-----------------------------------------------------------------------------
+# exports
+#-----------------------------------------------------------------------------
+if(BUILD_SINGLE_SHARED_LIBRARY)
+ set(EXPORT_LIBS dcmtk)
+else()
+ set(EXPORT_LIBS ${DCMTK_LIBRARIES})
+endif()
+
+export(TARGETS ${EXPORT_LIBS}
+ FILE ${PROJECT_BINARY_DIR}/DCMTKLibraryDepends.cmake)
+
+export(PACKAGE DCMTK)
+
+#
+# determine where include is relative to the CMake dir in
+# in installed tree
+file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
+ "${INSTALL_INCLUDE_DIR}")
+
+#-----------------------------------------------------------------------------
+# Write current configuration to file (for external projects)
+#-----------------------------------------------------------------------------
+set(DCMTKCONFIG_INCLUDE_DIR_CODE
+ "include(\"\${DCMTK_CMAKE_DIR}/DCMTKBuildTreeSettings.cmake\")")
+configure_file(${DCMTK_SOURCE_DIR}/CMake/DCMTKConfig.cmake.in
+ ${DCMTK_BINARY_DIR}/DCMTKConfig.cmake @ONLY)
+
+set(DCMTKCONFIG_INCLUDE_DIR_CODE
+"SET(DCMTK_INCLUDE_DIRS)
+foreach(inc \${DCMTK_INCLUDE_DIR_LIST})
+ list(APPEND DCMTK_INCLUDE_DIRS \${DCMTK_CMAKE_DIR}/${CONF_REL_INCLUDE_DIR}include/dcmtk/\${inc})
+endforeach()
+list(APPEND DCMTK_INCLUDE_DIRS \${DCMTK_CMAKE_DIR}/${CONF_REL_INCLUDE_DIR}include)"
+)
+configure_file(${DCMTK_SOURCE_DIR}/CMake/DCMTKConfig.cmake.in
+ CMakeFiles/DCMTKConfig.cmake @ONLY)
+
+#-----------------------------------------------------------------------------
+# Export version # checked by find_package
+#-----------------------------------------------------------------------------
+configure_file(${DCMTK_SOURCE_DIR}/CMake/DCMTKConfigVersion.cmake.in
+ "${PROJECT_BINARY_DIR}/DCMTKConfigVersion.cmake"
+ @ONLY)
+
+#
+# make a cmake file -- in this case, all that needs defining
+# is double-conversion_INCLUDE_DIRS
+configure_file(${DCMTK_SOURCE_DIR}/CMake/DCMTKBuildTreeSettings.cmake.in
+ "${PROJECT_BINARY_DIR}/DCMTKBuildTreeSettings.cmake"
+ @ONLY)
+
+#-----------------------------------------------------------------------------
# Installation tasks
#-----------------------------------------------------------------------------
@@ -82,6 +162,10 @@ INSTALL(FILES ANNOUNCE.${DCMTK_PACKAGE_VERSION_NUMBER} CHANGES.${DCMTK_PACKAGE_V
COMPONENT doc)
# Install DCMTK's CMake configuration file
-INSTALL(FILES ${DCMTK_BINARY_DIR}/DCMTKConfig.cmake
- DESTINATION ${DCMTK_INSTALL_DATDIR}
- COMPONENT data)
+INSTALL(FILES ${DCMTK_BINARY_DIR}/CMakeFiles/DCMTKConfig.cmake
+ ${DCMTK_BINARY_DIR}/DCMTKConfigVersion.cmake
+ DESTINATION ${INSTALL_CMAKE_DIR}
+ COMPONENT dev)
+
+install(EXPORT DCMTKLibraryDepends DESTINATION
+ "${INSTALL_CMAKE_DIR}" COMPONENT dev)
--
1.7.6.1