FindDCMTK¶
Finds the DICOM ToolKit (DCMTK) libraries and applications:
find_package(DCMTK [...])
DCMTK is a set of libraries and applications implementing large parts of the DICOM Standard (Digital Imaging and Communications in Medicine).
Добавлено в версии 3.5: This module is now able to find a version of DCMTK that does or does not
export a DCMTKConfig.cmake
file.
DCMTK since its version 3.6.1_20140617
supports and installs package configuration file (DCMTKConfig.cmake
) for use with the
find_package()
command in config mode.
This module now applies a two-step process:
Step 1: Attempts to find DCMTK version providing a
DCMTKConfig.cmake
file and, if found, returns the results without further action.Step 2: If step 1 failed, this module falls back to module mode (it searches standard locations) and sets the
DCMTK_*
result variables.
Until all clients update to the more recent DCMTK, build systems will need to support different versions of DCMTK.
On any given system, the following combinations of DCMTK versions could
be considered for the DCMTK installed on the system (for example, via a
system package manager), or locally (for example, a custom installation,
or through the FetchContent
module):
Case |
System DCMTK |
Local DCMTK |
Supported? |
---|---|---|---|
A |
N/A |
[ ] DCMTKConfig |
YES |
B |
N/A |
[X] DCMTKConfig |
YES |
C |
[ ] DCMTKConfig |
N/A |
YES |
D |
[X] DCMTKConfig |
N/A |
YES |
E |
[ ] DCMTKConfig |
[ ] DCMTKConfig |
YES (*) |
F |
[X] DCMTKConfig |
[ ] DCMTKConfig |
NO |
G |
[ ] DCMTKConfig |
[X] DCMTKConfig |
YES |
H |
[X] DCMTKConfig |
[X] DCMTKConfig |
YES |
Legend:
- (*)
See the Troubleshooting section.
- N/A
DCMTK is not available.
- [ ] DCMTKConfig
DCMTK does NOT export a
DCMTKConfig.cmake
file.- [X] DCMTKConfig
DCMTK exports a
DCMTKConfig.cmake
file.
Result Variables¶
This module defines the following variables:
DCMTK_FOUND
Boolean indicating whether DCMTK was found.
DCMTK_INCLUDE_DIRS
Include directories containing headers needed to use DCMTK.
DCMTK_LIBRARIES
Libraries needed to link against to use DCMTK.
Hints¶
This module accepts the following variables:
DCMTK_DIR
(optional) Source directory for DCMTK.
Troubleshooting¶
What to do if project finds a different version of DCMTK?
Remove DCMTK entry from the CMake cache per find_package()
documentation, and re-run configuration. To find DCMTK on custom location
use variables such as CMAKE_PREFIX_PATH
, or DCMTK_DIR
.
Examples¶
Example: Finding DCMTK¶
Finding DCMTK with this module:
find_package(DCMTK)
Example: Finding DCMTK Without This Module¶
To explicitly use the DCMTKConfig.cmake
package configuration file
(recommended when possible) and find DCMTK in config mode without using
this module, the NO_MODULE
option can be given to
find_package()
:
find_package(DCMTK NO_MODULE)
Example: Creating Imported Target¶
In the following example, DCMTK is searched with this module and
an imported target is conditionally created to
provide DCMTK usage requirements which can be easily linked to project
targets. For example, if DCMTK is found in config mode, the
DCMTK::DCMTK
imported target will be available through the found config
files instead:
find_package(DCMTK)
# Upstream DCMTKConfig.cmake already provides DCMTK::DCMTK imported target
if(DCMTK_FOUND AND NOT TARGET DCMTK::DCMTK)
add_library(DCMTK::DCMTK INTERFACE IMPORTED)
set_target_properties(
DCMTK:DCMTK
PROPERTIES
INTERFACE_LINK_LIBRARIES "${DCMTK_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${DCMTK_INCLUDE_DIRS}"
)
endif()
target_link_libraries(example PRIVATE DCMTK::DCMTK)