diff --git a/Modules/IO/DCMTK/src/CMakeLists.txt b/Modules/IO/DCMTK/src/CMakeLists.txt index 9616fb7041d..53efc9c3201 100644 --- a/Modules/IO/DCMTK/src/CMakeLists.txt +++ b/Modules/IO/DCMTK/src/CMakeLists.txt @@ -21,12 +21,12 @@ target_include_directories(ITKIODCMTK PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries( ITKIODCMTK PRIVATE - dcmdata - dcmimgle - dcmimage - dcmjpeg - dcmjpls - oflog + DCMTK::dcmdata + DCMTK::dcmimgle + DCMTK::dcmimage + DCMTK::dcmjpeg + DCMTK::dcmjpls + DCMTK::oflog ) if(DEFINED DCMTK_HAVE_CONFIG_H_OPTIONAL AND NOT DCMTK_HAVE_CONFIG_H_OPTIONAL) diff --git a/Modules/IO/IOTransformDCMTK/src/CMakeLists.txt b/Modules/IO/IOTransformDCMTK/src/CMakeLists.txt index 54fc39b970f..1400c9b4f7e 100644 --- a/Modules/IO/IOTransformDCMTK/src/CMakeLists.txt +++ b/Modules/IO/IOTransformDCMTK/src/CMakeLists.txt @@ -10,7 +10,7 @@ list(REMOVE_ITEM ITK_MODULE_IOTransformDCMTK_PRIVATE_DEPENDS ITKDCMTK) itk_module_add_library(IOTransformDCMTK ${IOTransformDCMTK_SRCS}) -target_link_libraries(IOTransformDCMTK PRIVATE dcmdata) +target_link_libraries(IOTransformDCMTK PRIVATE DCMTK::dcmdata) # itkDCMTKTransformIO.hxx is a private implementation header in this directory. target_include_directories(IOTransformDCMTK PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/Modules/ThirdParty/DCMTK/CMakeLists.txt b/Modules/ThirdParty/DCMTK/CMakeLists.txt index 6f178a171d6..958d76b66d4 100644 --- a/Modules/ThirdParty/DCMTK/CMakeLists.txt +++ b/Modules/ThirdParty/DCMTK/CMakeLists.txt @@ -107,6 +107,9 @@ else(ITK_USE_SYSTEM_DCMTK) # DCMTK build options; compiler and language-standard settings inherit from ITK's scope. set(BUILD_APPS OFF) + # Per-library targets only: a single-library build renames targets with a + # suffix the DCMTK IO modules' DCMTK:: link names cannot match. + set(BUILD_SINGLE_SHARED_LIBRARY OFF) set(DCMTK_ENABLE_CXX11 ON) set(DCMTK_FORCE_FPIC_ON_UNIX ON) set(DCMTK_DEFAULT_DICT builtin) @@ -148,21 +151,15 @@ else(ITK_USE_SYSTEM_DCMTK) # namespaced name in ITKTargets.cmake, matching what find_package(DCMTK) # yields for downstream consumers. foreach(_dcmtk_lib IN LISTS _ITKDCMTK_LIB_NAMES) - set(_dcmtk_target "${_dcmtk_lib}${DCMTK_LIBRARY_SUFFIX}") - if(TARGET "${_dcmtk_target}") - if(NOT TARGET "DCMTK::${_dcmtk_target}") - add_library("DCMTK::${_dcmtk_target}" INTERFACE IMPORTED GLOBAL) - target_link_libraries( - "DCMTK::${_dcmtk_target}" - INTERFACE - "${_dcmtk_target}" - ) + if(TARGET "${_dcmtk_lib}") + if(NOT TARGET "DCMTK::${_dcmtk_lib}") + add_library("DCMTK::${_dcmtk_lib}" INTERFACE IMPORTED GLOBAL) + target_link_libraries("DCMTK::${_dcmtk_lib}" INTERFACE "${_dcmtk_lib}") endif() - list(APPEND ITKDCMTK_LIBRARIES "DCMTK::${_dcmtk_target}") + list(APPEND ITKDCMTK_LIBRARIES "DCMTK::${_dcmtk_lib}") endif() endforeach() unset(_dcmtk_lib) - unset(_dcmtk_target) # Build-tree consumers: locate DCMTKConfig.cmake in ITK's build root. set( diff --git a/Modules/ThirdParty/DCMTK/itk-module-init.cmake b/Modules/ThirdParty/DCMTK/itk-module-init.cmake index 7650f3b5521..070da78eaf2 100644 --- a/Modules/ThirdParty/DCMTK/itk-module-init.cmake +++ b/Modules/ThirdParty/DCMTK/itk-module-init.cmake @@ -5,7 +5,8 @@ option(ITK_USE_SYSTEM_DCMTK "Use an outside build of DCMTK." OFF) if(ITK_USE_SYSTEM_DCMTK) # Use local FindDCMTK.cmake. list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_LIST_DIR}/CMake") - find_package(DCMTK REQUIRED NO_MODULE) + # 3.7.0 matches the vendored DCMTK and guarantees DCMTK::-namespaced targets. + find_package(DCMTK 3.7.0 REQUIRED NO_MODULE) else() # Change default from OFF to ON for portability. option(