The FindDCMTK.cmake module in the git master branch doesn't find all the dcmtk libraries. I've attached a modified version of FindDCMTK that finds all the dcmtk libraries. It is also about 25% smaller as some duplicated code has been unified using FOREACH.

I hope you will consider including it in the CMake distribution.

Regards,

Thomas Sondergaard
# - 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.malate...@gmail.com>
# Copyright 2010 Thomas Sondergaard <t...@medical-insight.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.
# Modified for EasyViz by Thomas Sondergaard.
# 

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 )


FOREACH (lib dcmdata dcmimage dcmimgle dcmjpeg dcmnet dcmpstat dcmqrdb
             dcmsign dcmsr dcmtls ijg12 ijg16 ijg8 ofstd)

  FIND_LIBRARY(DCMTK_${lib}_LIBRARY ${lib} 
    ${DCMTK_DIR}/${lib}/libsrc
    ${DCMTK_DIR}/${lib}/libsrc/Release
    ${DCMTK_DIR}/${lib}/libsrc/Debug
    ${DCMTK_DIR}/${lib}/Release
    ${DCMTK_DIR}/${lib}/Debug
    ${DCMTK_DIR}/lib
  )

  MARK_AS_ADVANCED(DCMTK_${lib}_LIBRARY)

  IF (DCMTK_${lib}_LIBRARY)
    SET(DCMTK_LIBRARIES
      ${DCMTK_LIBRARIES}
      ${DCMTK_${lib}_LIBRARY}
    )
  ENDIF ()

ENDFOREACH ()


SET(DCMTK_config_TEST_HEADER osconfig.h)
SET(DCMTK_dcmdata_TEST_HEADER dctypes.h)
SET(DCMTK_dcmimage_TEST_HEADER dicoimg.h)
SET(DCMTK_dcmimgle_TEST_HEADER dcmimage.h)
SET(DCMTK_dcmjpeg_TEST_HEADER djdecode.h)
SET(DCMTK_dcmnet_TEST_HEADER assoc.h)
SET(DCMTK_dcmpstat_TEST_HEADER dcmpstat.h)
SET(DCMTK_dcmqrdb_TEST_HEADER dcmqrdba.h)
SET(DCMTK_dcmsign_TEST_HEADER sicert.h)
SET(DCMTK_dcmsr_TEST_HEADER dsrtree.h)
SET(DCMTK_dcmtls_TEST_HEADER tlslayer.h)
SET(DCMTK_ofstd_TEST_HEADER ofstdinc.h)

FOREACH (dir config dcmdata dcmimage dcmimgle dcmjpeg dcmnet dcmpstat dcmqrdb
             dcmsign dcmsr dcmtls ofstd)
  FIND_PATH(DCMTK_${dir}_INCLUDE_DIR ${DCMTK_${dir}_TEST_HEADER}
    ${DCMTK_DIR}/${dir}/include
    ${DCMTK_DIR}/${dir}
    ${DCMTK_DIR}/include/${dir}
  )

  MARK_AS_ADVANCED(DCMTK_${dir}_INCLUDE_DIR)

  IF (DCMTK_${dir}_INCLUDE_DIR)
    SET(DCMTK_INCLUDE_DIR
      ${DCMTK_INCLUDE_DIR}
      ${DCMTK_${dir}_INCLUDE_DIR}
    )
  ENDIF ()
ENDFOREACH ()

IF (WIN32)
  SET(DCMTK_LIBRARIES ${DCMTK_LIBRARIES} netapi32)
ENDIF ()

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)

  SET(DCMTK_FOUND "YES")

  GET_FILENAME_COMPONENT(DCMTK_dcmtk_INCLUDE_DIR ${DCMTK_ofstd_INCLUDE_DIR} 
PATH CACHE)
  SET(DCMTK_INCLUDE_DIR
    ${DCMTK_INCLUDE_DIR}
    ${DCMTK_dcmtk_INCLUDE_DIR}
  )

ENDIF ()

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
  )

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to