Browse Source

COMP: Ensure FindDCMTK module works with and without DCMTKConfig.cmake file

In the case the provided DCMTK build or install tree doesn't have a
DCMTKConfig.cmake file, the first call to "find_package" should fail
quietly so that it doesn't prevent the rest of discovery process from working
as expected.

See #329
Jean-Christophe Fillion-Robin 12 years ago
parent
commit
74b4b07b92
1 changed files with 6 additions and 10 deletions
  1. 6 10
      Utilities/CMake/FindDCMTK.cmake

+ 6 - 10
Utilities/CMake/FindDCMTK.cmake

@@ -34,23 +34,20 @@
 # Modified for EasyViz by Thomas Sondergaard.
 #
 
+set(_SAVED_DCMTK_DIR ${DCMTK_DIR})
+
 #
 # First, try to use NO_MODULE
-set(_DCMTK_REQUIRED)
-set(_DCMTK_QUIET)
-if(DCMTK_FIND_QUIETLY)
-  set(_DCMTK_QUIET QUIET)
-endif()
-if(DCMTK_FIND_REQUIRED)
-  set(_DCMTK_REQUIRED REQUIRED)
-endif()
-find_package(DCMTK ${_DCMTK_REQUIRED} ${_DCMTK_QUIET} NO_MODULE)
+find_package(DCMTK QUIET NO_MODULE)
 if(DCMTK_FOUND
     AND NOT "x" STREQUAL "x${DCMTK_LIBRARIES}"
     AND NOT "x" STREQUAL "x${DCMTK_INCLUDE_DIRS}")
   return()
 endif()
 
+# Restore the value reset by the previous call to 'find_package(DCMTK QUIET NO_MODULE)'
+set(DCMTK_DIR ${_SAVED_DCMTK_DIR} CACHE PATH "The directory containing a CMake configuration file for DCMTK." FORCE) 
+
 # prefer DCMTK_DIR over default system paths like /usr/lib
 if(DCMTK_DIR)
   set(CMAKE_PREFIX_PATH ${DCMTK_DIR}/lib ${CMAKE_PREFIX_PATH}) # this is given to FIND_LIBRARY or FIND_PATH
@@ -188,7 +185,6 @@ foreach(dir
     ${DCMTK_DIR}/include/${dir}
     ${SOURCE_DIR_PATH}
     )
-
   mark_as_advanced(DCMTK_${dir}_INCLUDE_DIR)
   list(APPEND DCMTK_INCLUDE_DIR_NAMES DCMTK_${dir}_INCLUDE_DIR)