diff --git a/CMake/ITKConfig.cmake.in b/CMake/ITKConfig.cmake.in index 97e65584ca2..51b435bf20e 100644 --- a/CMake/ITKConfig.cmake.in +++ b/CMake/ITKConfig.cmake.in @@ -59,6 +59,9 @@ set(ITK_BUILD_DOCUMENTATION "@ITK_BUILD_DOCUMENTATION@") # List of available ITK modules. set(ITK_MODULES_ENABLED "@ITK_CONFIG_MODULES_ENABLED@") +# Define the ITK library namespace for CMake targets, without the trailing ::. +set(ITK_LIBRARY_NAMESPACE "@ITK_LIBRARY_NAMESPACE@") + # Import ITK targets. set(ITK_CONFIG_TARGETS_FILE "@ITK_CONFIG_TARGETS_FILE@") if(NOT ITK_TARGETS_IMPORTED@ITK_CONFIG_TARGETS_CONDITION@) diff --git a/CMake/ITKFactoryRegistration.cmake b/CMake/ITKFactoryRegistration.cmake index dcacd8e7afc..9033ef827e1 100644 --- a/CMake/ITKFactoryRegistration.cmake +++ b/CMake/ITKFactoryRegistration.cmake @@ -136,10 +136,11 @@ # Caveats # ------- # -# Since the both include directory containing the registration manager headers -# and the `ITK_IO_FACTORY_REGISTER_MANAGER` COMPILE_DEFINITIONS are set as -# directory properties, including external project (themselves including ITK) -# after including ITK can have unintended side effects. +# The include directory containing the registration manager headers and the +# `ITK__FACTORY_REGISTER_MANAGER` COMPILE_DEFINITIONS are set as +# target interface properties on the factory meta-module targets (ITKImageIO, +# ITKMeshIO, ITKTransformIO, ITKFFTImageFilterInit). This ensures proper propagation +# to dependent targets through modern CMake usage requirements. # # _itk_configure_FactoryRegisterManager( ) @@ -148,6 +149,8 @@ # `/ITKFactoryRegistration/`. # # Header is named using the template `itkFactoryRegisterManager.h` +# The include directory and compile definitions are added to the corresponding +# factory meta-module target's INTERFACE properties. # function(_itk_configure_FactoryRegisterManager factory_type formats) set(LIST_OF_FACTORIES_REGISTRATION "") @@ -169,6 +172,23 @@ function(_itk_configure_FactoryRegisterManager factory_type formats) "${CMAKE_CURRENT_BINARY_DIR}/ITKFactoryRegistration/itk${factory_type}FactoryRegisterManager.h" @ONLY ) + + # These functions may be called in the ITK source ( or a fetch content sub-project ), + # so support is needed when the namespaced meta-module target is an alias to the real target. + set(_meta_module ${ITK_LIBRARY_NAMESPACE}::ITK${factory_type}) + get_property( + aliased_target_name + TARGET ${_meta_module} + PROPERTY ALIASED_TARGET + ) + if(aliased_target_name) + set(_meta_module ${aliased_target_name}) + endif() + target_include_directories( + ${_meta_module} + INTERFACE + "$" + ) endfunction() # _itk_ADD_FACTORY_REGISTRATION( ) diff --git a/CMake/ITKModuleAPI.cmake b/CMake/ITKModuleAPI.cmake index 6f4fab1426e..fe734e65fbf 100644 --- a/CMake/ITKModuleAPI.cmake +++ b/CMake/ITKModuleAPI.cmake @@ -30,6 +30,7 @@ macro(_itk_module_config_recurse ns mod) list(APPEND _${ns}_USED_MODULES ${mod}) itk_module_load("${mod}") list(APPEND ${ns}_LIBRARIES ${${mod}_LIBRARIES}) + list(APPEND ${ns}_INTERFACE_LIBRARIES ${${mod}_INTERFACE_LIBRARY}) list(APPEND ${ns}_INCLUDE_DIRS ${${mod}_INCLUDE_DIRS}) list(APPEND ${ns}_LIBRARY_DIRS ${${mod}_LIBRARY_DIRS}) list(APPEND ${ns}_RUNTIME_LIBRARY_DIRS ${${mod}_RUNTIME_LIBRARY_DIRS}) @@ -75,6 +76,7 @@ endmacro() # _TRANSITIVE_DEPENDS = List of dependencies on other modules (public link, compile) # _PRIVATE_DEPENDS = List of dependencies on other modules (private link) # _LIBRARIES = Libraries to link +# _INTERFACE_LIBRARY = Interface library for module # _INCLUDE_DIRS = Header search path # _LIBRARY_DIRS = Library search path (for outside dependencies) # _RUNTIME_LIBRARY_DIRS = Runtime linker search path @@ -97,7 +99,8 @@ endmacro() # itk_module_config( [modules...]) # # Configures variables describing the given modules and their dependencies: -# _LIBRARIES = Libraries to link +# _LIBRARIES = Libraries +# _INTERFACE_LIBRARIES = Interface libraries to link with public interfaces # _INCLUDE_DIRS = Header search path # _LIBRARY_DIRS = Library search path (for outside dependencies) # _RUNTIME_LIBRARY_DIRS = Runtime linker search path @@ -123,6 +126,7 @@ endmacro() # future. For more details, read documentation in CMake/UseITK.cmake. macro(itk_module_config ns) set(${ns}_LIBRARIES "") + set(${ns}_INTERFACE_LIBRARIES "") set(${ns}_INCLUDE_DIRS "") set(${ns}_LIBRARY_DIRS "") set(${ns}_RUNTIME_LIBRARY_DIRS "") @@ -143,6 +147,7 @@ macro(itk_module_config ns) foreach( v ${ns}_LIBRARIES + ${ns}_INTERFACE_LIBRARIES ${ns}_INCLUDE_DIRS ${ns}_LIBRARY_DIRS ${ns}_RUNTIME_LIBRARY_DIRS @@ -153,6 +158,7 @@ macro(itk_module_config ns) list(REMOVE_DUPLICATES ${v}) endif() endforeach() + foreach(_factory ${${ns}_FACTORY_LIST}) list(SORT ${ns}_${_factory}) # Sort to ensure a deterministic order endforeach() diff --git a/CMake/ITKModuleEnablement.cmake b/CMake/ITKModuleEnablement.cmake index c994174d988..909566addae 100644 --- a/CMake/ITKModuleEnablement.cmake +++ b/CMake/ITKModuleEnablement.cmake @@ -426,8 +426,45 @@ macro(init_module_vars) "${ITK_INSTALL_PACKAGE_DIR}/ITKTargets.cmake" ) set(${itk-module}-targets-build "${ITK_BINARY_DIR}/ITKTargets.cmake") + + set(${itk-module}-targets-namespace "") + if(ITK_LIBRARY_NAMESPACE) + set(${itk-module}-targets-namespace "${ITK_LIBRARY_NAMESPACE}::") + endif() endmacro() +#---------------------------------------------------------------------- +# Create factory meta-module interface libraries +# These are created for ITKImageIO, ITKMeshIO, ITKTransformIO and FFTImageFilterInit factories +foreach(_factory_name IN ITEMS ImageIO MeshIO TransformIO FFTImageFilterInit) + set(itk-module ITK${_factory_name}) + if(NOT TARGET ${itk-module}) + add_library(${itk-module} INTERFACE) + + init_module_vars(${itk-module}) + set(ITK_MODULE_${itk-module}_DECLARED 1) + + # Factory modules will be added as dependencies to this meta-module. + # When itk_generate_factory_registration() is called, it adds the include + # directory containing the generated FactoryRegisterManager header file. + # + # Note: Compilation errors like "itkImageIOFactoryRegisterManager.h: No such file or directory" + # indicate that itk_generate_factory_registration() has not been called to generate the header files. + + # Add factory registration compile definition + string(TOUPPER ${_factory_name} _factory_uc) + target_compile_definitions( + ${itk-module} + INTERFACE + ITK_${_factory_uc}_FACTORY_REGISTER_MANAGER + ) + + # Export and install the factory interface library + itk_module_target_export(${itk-module}) + itk_module_target_install(${itk-module}) + endif() +endforeach() + # Build all modules. foreach(itk-module ${ITK_MODULES_ENABLED}) if(NOT ${itk-module}_IS_TEST) diff --git a/CMake/ITKModuleHeaderTest.cmake b/CMake/ITKModuleHeaderTest.cmake index f2b848c227c..7cd8fcc10b3 100644 --- a/CMake/ITKModuleHeaderTest.cmake +++ b/CMake/ITKModuleHeaderTest.cmake @@ -123,9 +123,24 @@ macro(itk_module_headertest _name) target_link_libraries( ${_test_name} PUBLIC - ${${_name}_LIBRARIES} + ITK::${_name}Module itksys ) + + # Add module include directories to target + target_include_directories( + ${_test_name} + PRIVATE + ${${_name}_GENEX_INCLUDE_DIRS} + ) + + # Add module system include directories to target + target_include_directories( + ${_test_name} + PRIVATE + ${${_name}_GENEX_SYSTEM_INCLUDE_DIRS} + ) + target_link_options( ${_test_name} PRIVATE diff --git a/CMake/ITKModuleInfo.cmake.in b/CMake/ITKModuleInfo.cmake.in index 569ce9ce02f..9a44ce481da 100644 --- a/CMake/ITKModuleInfo.cmake.in +++ b/CMake/ITKModuleInfo.cmake.in @@ -4,10 +4,18 @@ set(@itk-module@_DEPENDS "@itk-module-DEPENDS@") set(@itk-module@_PUBLIC_DEPENDS "@itk-module-PUBLIC_DEPENDS@") set(@itk-module@_TRANSITIVE_DEPENDS "@itk-module-TRANSITIVE_DEPENDS@") set(@itk-module@_PRIVATE_DEPENDS "@itk-module-PRIVATE_DEPENDS@") +set(@itk-module@_LIBRARIES_DEPRECATED "@itk-module-LIBRARIES_DEPRECATED@") set(@itk-module@_LIBRARIES "@itk-module-LIBRARIES@") +set(@itk-module@_INTERFACE_LIBRARY "@itk-module-INTERFACE_LIBRARY@") set(@itk-module@_INCLUDE_DIRS "@itk-module-INCLUDE_DIRS@") set(@itk-module@_LIBRARY_DIRS "@itk-module-LIBRARY_DIRS@") set(@itk-module@_RUNTIME_LIBRARY_DIRS "@itk-module-RUNTIME_LIBRARY_DIRS@") set(@itk-module@_TARGETS_FILE "@itk-module-TARGETS_FILE@") set(@itk-module@_FACTORY_NAMES "@itk-module-FACTORY_NAMES@") + +# Create deprecated library interface wrappers +# TODO + + + @itk-module-EXPORT_CODE@ diff --git a/CMake/ITKModuleMacros.cmake b/CMake/ITKModuleMacros.cmake index 58fbfe792bf..d9f7959b045 100644 --- a/CMake/ITKModuleMacros.cmake +++ b/CMake/ITKModuleMacros.cmake @@ -12,6 +12,30 @@ include(${_ITKModuleMacros_DIR}/ITKFactoryRegistration.cmake) include(GenerateExportHeader) +# _itk_module_convert_namespace_target_list(var_name) +# +# Helper function that converts a list of module names to their fully namespaced +# target names with the Module suffix. This function modifies the variable in-place +# in the parent scope. +# +# For each element in the list, converts: +# ElementName -> ${ElementName-targets-namespace}ElementNameModule +# +# Arguments: +# var_name - Name of the variable containing the list to convert +# +# Example: +# set(MY_DEPS ITKCommon ITKIOImageBase) +# _itk_module_convert_namespace_target_list(MY_DEPS) +# # MY_DEPS now contains: ITK::ITKCommonModule ITK::ITKIOImageBaseModule (if namespace is ITK::) +function(_itk_module_convert_namespace_target_list var_name) + set(_converted_list "") + foreach(_item IN LISTS ${var_name}) + list(APPEND _converted_list "${${_item}-targets-namespace}${_item}Module") + endforeach() + set(${var_name} "${_converted_list}" PARENT_SCOPE) +endfunction() + # itk_module() # # Main function for declaring an ITK module, usually in an itk-module.cmake file @@ -122,14 +146,10 @@ macro(itk_module _name) ) unset(ITK_MODULE_${itk-module}_COMPILE_DEPENDS) list(SORT ITK_MODULE_${itk-module}_DEPENDS) # Deterministic order. - if(ITK_MODULE_${itk-module}_TRANSITIVE_DEPENDS) # Don't sort an empty list - list(SORT ITK_MODULE_${itk-module}_TRANSITIVE_DEPENDS) # Deterministic order. - endif() + list(SORT ITK_MODULE_${itk-module}_TRANSITIVE_DEPENDS) # Deterministic order. list(SORT ITK_MODULE_${itk-module}_PRIVATE_DEPENDS) # Deterministic order. list(SORT ITK_MODULE_${itk-module-test}_DEPENDS) # Deterministic order. - if(ITK_MODULE_${itk-module}_FACTORY_NAMES) # Don't sort an empty list - list(SORT ITK_MODULE_${itk-module}_FACTORY_NAMES) # Deterministic order. - endif() + list(SORT ITK_MODULE_${itk-module}_FACTORY_NAMES) # Deterministic order. endmacro() macro(itk_module_check_name _name) @@ -173,14 +193,24 @@ macro(itk_module_impl) itk_module_use(${ITK_MODULE_${itk-module}_DEPENDS}) - if(NOT DEFINED ${itk-module}_LIBRARIES) - set(${itk-module}_LIBRARIES "") - foreach(dep IN LISTS ITK_MODULE_${itk-module}_DEPENDS) - list(APPEND ${itk-module}_LIBRARIES "${${dep}_LIBRARIES}") + # The ${itk-module}_LIBRARIES variable defined the libraries provided by this module. + # Transitive dependencies of this module are provided through the + # ${itk-module}Module interface library created below. + set(${itk-module}_LIBRARIES_DEPRECATED "") + if(DEFINED ${itk-module}_LIBRARIES) + set(_libraries "") + foreach(dep IN LISTS ${itk-module}_LIBRARIES) + # check if dep already has namespace and Module suffix + if("${dep}" MATCHES "^(.*)::(.*)$") + list(APPEND _libraries "${dep}") + else() + list(APPEND _libraries "${${itk-module}-targets-namespace}${dep}") + list(APPEND ${itk-module}_LIBRARIES_DEPRECATED "${dep}") + endif() endforeach() - if(${itk-module}_LIBRARIES) - list(REMOVE_DUPLICATES ${itk-module}_LIBRARIES) - endif() + set(${itk-module}_LIBRARIES "${_libraries}") + list(REMOVE_DUPLICATES ${itk-module}_LIBRARIES) + list(REMOVE_DUPLICATES ${itk-module}_LIBRARIES_DEPRECATED) endif() if(EXISTS ${${itk-module}_SOURCE_DIR}/include) @@ -198,16 +228,28 @@ macro(itk_module_impl) list(APPEND ${itk-module}_INCLUDE_DIRS ${${itk-module}_BINARY_DIR}/include) endif() - if(${itk-module}_INCLUDE_DIRS) - include_directories(${${itk-module}_INCLUDE_DIRS}) - endif() - if(${itk-module}_SYSTEM_INCLUDE_DIRS) - # _SYSTEM_INCLUDE_DIRS should searched after internal _INCLUDE_DIRS - include_directories(AFTER ${${itk-module}_SYSTEM_INCLUDE_DIRS}) - endif() + # Prepare include directories with generator expressions for use in targets + set(${itk-module}_GENEX_INCLUDE_DIRS "") + foreach(_dir ${${itk-module}_INCLUDE_DIRS}) + list(APPEND ${itk-module}_GENEX_INCLUDE_DIRS "$") + endforeach() + list( + APPEND + ${itk-module}_GENEX_INCLUDE_DIRS + "$/${${itk-module}_INSTALL_INCLUDE_DIR}>" + ) - if(${itk-module}_SYSTEM_LIBRARY_DIRS) - link_directories(${${itk-module}_SYSTEM_LIBRARY_DIRS}) + # Prepare system include directories with generator expressions + set(${itk-module}_SYSTEM_GENEX_INCLUDE_DIRS "") + if(${itk-module}_SYSTEM_INCLUDE_DIRS) + foreach(_dir ${${itk-module}_SYSTEM_INCLUDE_DIRS}) + list( + APPEND + ${itk-module}_SYSTEM_GENEX_INCLUDE_DIRS + "$" + "$" + ) + endforeach() endif() if(${itk-module}_THIRD_PARTY) @@ -312,6 +354,69 @@ macro(itk_module_impl) endif() endif() + #### + # Create ${itk-module}Module interface library for ITK Modules + #### + add_library(${itk-module}Module INTERFACE) + + target_link_libraries( + ${itk-module}Module + INTERFACE + ${${itk-module}_LIBRARIES} + ) + + # Add include directories with generator expressions + target_include_directories( + ${itk-module}Module + INTERFACE + ${${itk-module}_GENEX_INCLUDE_DIRS} + ) + target_include_directories( + ${itk-module}Module + SYSTEM + INTERFACE + ${${itk-module}_SYSTEM_GENEX_INCLUDE_DIRS} + ) + + # Link transitive dependencies (public + compile depends) through ${itk-module}Module interface + foreach(dep IN LISTS ITK_MODULE_${itk-module}_TRANSITIVE_DEPENDS) + target_link_libraries( + ${itk-module}Module + INTERFACE + ${${dep}-targets-namespace}${dep}Module + ) + endforeach() + + # Link this module to factory meta-module interfaces if it provides factories + if(ITK_MODULE_${itk-module}_FACTORY_NAMES) + foreach(_factory_format ${ITK_MODULE_${itk-module}_FACTORY_NAMES}) + # Extract factory name from :: + string( + REGEX + REPLACE + "^(.*)::(.*)$" + "\\1" + _factory_name + "${_factory_format}" + ) + set(_meta_module ITK${_factory_name}) + + # Add this module to the factory meta-module + target_link_libraries( + ${_meta_module} + INTERFACE + ${${itk-module}-targets-namespace}${itk-module}Module + ) + endforeach() + endif() + + # Export and install the interface library + itk_module_target_export(${itk-module}Module) + itk_module_target_install(${itk-module}Module) + #### + # End ITK Modules interface library creation + #### + set(itk-module-EXPORT_CODE-build "${${itk-module}_EXPORT_CODE_BUILD}") set(itk-module-EXPORT_CODE-install "${${itk-module}_EXPORT_CODE_INSTALL}") if(ITK_SOURCE_DIR) @@ -332,7 +437,13 @@ macro(itk_module_impl) ) set(itk-module-PRIVATE_DEPENDS "${ITK_MODULE_${itk-module}_PRIVATE_DEPENDS}") set(itk-module-FACTORY_NAMES "${ITK_MODULE_${itk-module}_FACTORY_NAMES}") + set(itk-module-LIBRARIES_DEPRECATED "${${itk-module}_LIBRARIES_DEPRECATED}") set(itk-module-LIBRARIES "${${itk-module}_LIBRARIES}") + set( + itk-module-INTERFACE_LIBRARY + "${${itk-module}-targets-namespace}${itk-module}Module" + ) + set(itk-module-INCLUDE_DIRS-build "${${itk-module}_INCLUDE_DIRS}") set( itk-module-INCLUDE_DIRS-install @@ -375,6 +486,12 @@ macro(itk_module_impl) "${itk-module-RUNTIME_LIBRARY_DIRS-build}" ) set(itk-module-INCLUDE_DIRS "${itk-module-INCLUDE_DIRS-build}") + # set itk-module-GENEX_INCLUDE_DIRS so that includes both install interface and build interface path in appropriate generator expressions + set(itk-module-GENEX_INCLUDE_DIRS "") + foreach(_dir ${itk-module-INCLUDE_DIRS-build}) + list(APPEND itk-module-GENEX_INCLUDE_DIRS "$") + endforeach() + set(itk-module-EXPORT_CODE "${itk-module-EXPORT_CODE-build}") set(itk-module-TARGETS_FILE "${itk-module-TARGETS_FILE-build}") configure_file( @@ -410,28 +527,36 @@ endmacro() macro(itk_module_link_dependencies) # link to public dependencies foreach(dep IN LISTS ITK_MODULE_${itk-module}_PUBLIC_DEPENDS) - if(DEFINED ${dep}_LIBRARIES) - target_link_libraries(${itk-module} LINK_PUBLIC ${${dep}_LIBRARIES}) + if(ITK_MODULE_${dep}_DECLARED) + target_link_libraries( + ${itk-module} + LINK_PUBLIC + ${${dep}-targets-namespace}${dep}Module + ) elseif(DEFINED ${dep}) target_link_libraries(${itk-module} LINK_PUBLIC ${${dep}}) else() message( FATAL_ERROR - "Dependency \"${dep}\" not found: could not find [${dep}] or [${dep}_LIBRARIES]" + "Dependency \"${dep}\" not found: could not find [${dep}] or [${${dep}-targets-namespace}${dep}Module]" ) endif() endforeach() # link to private dependencies foreach(dep IN LISTS ITK_MODULE_${itk-module}_PRIVATE_DEPENDS) - if(DEFINED ${dep}_LIBRARIES) - target_link_libraries(${itk-module} LINK_PRIVATE ${${dep}_LIBRARIES}) + if(ITK_MODULE_${dep}_DECLARED) + target_link_libraries( + ${itk-module} + LINK_PRIVATE + ${${dep}-targets-namespace}${dep}Module + ) elseif(DEFINED ${dep}) target_link_libraries(${itk-module} LINK_PRIVATE ${${dep}}) else() message( FATAL_ERROR - "Dependency \"${dep}\" not found: could not find [${dep}] or [${dep}_LIBRARIES]" + "Dependency \"${dep}\" not found: could not find [${dep}] or [${${dep}-targets-namespace}${dep}Module]" ) endif() endforeach() @@ -442,7 +567,11 @@ macro(itk_module_test) set(${itk-module-test}_LIBRARIES "") itk_module_use(${ITK_MODULE_${itk-module-test}_DEPENDS}) foreach(dep IN LISTS ITK_MODULE_${itk-module-test}_DEPENDS) - list(APPEND ${itk-module-test}_LIBRARIES "${${dep}_LIBRARIES}") + list( + APPEND + ${itk-module-test}_LIBRARIES + "${${dep}-targets-namespace}${dep}Module" + ) endforeach() set(ITK_TEST_OUTPUT_DIR "${ITK_TEST_OUTPUT_DIR}/${itk-module}") file(MAKE_DIRECTORY "${ITK_TEST_OUTPUT_DIR}") @@ -557,7 +686,33 @@ macro(itk_module_target_name _name) ) endmacro() +# itk_module_target_export(_name) +# +# Macro for exporting a target from an ITK module to the build tree. This macro +# handles the export of targets to make them available to other ITK modules and +# external projects that use ITK. +# +# For library targets with a defined namespace (${itk-module}-targets-namespace), +# this macro creates an ALIAS target with the namespace prefix and sets the +# EXPORT_NAME property accordingly. This ensures consistent naming when the target +# is used through find_package(ITK). +# +# All targets are exported to the module's build tree targets file +# (${itk-module}-targets-build) for use during the build process. +# +# Arguments: +# _name - The name of the target to export (typically ${itk-module} or ${itk-module}Module) macro(itk_module_target_export _name) + get_property(_ttype TARGET ${_name} PROPERTY TYPE) + if(_ttype MATCHES ".*_LIBRARY$" AND ${itk-module}-targets-namespace) + add_library(${${itk-module}-targets-namespace}${_name} ALIAS ${_name}) + set_target_properties( + ${_name} + PROPERTIES + EXPORT_NAME + ${${itk-module}-targets-namespace}${_name} + ) + endif() export(TARGETS ${_name} APPEND FILE ${${itk-module}-targets-build}) endmacro() @@ -630,6 +785,25 @@ macro(itk_module_add_library _name) ${ARGN} ) target_compile_features(${_name} PUBLIC cxx_std_${CMAKE_CXX_STANDARD}) + + # Add module include directories to target + target_include_directories( + ${_name} + PUBLIC + ${${itk-module}_GENEX_INCLUDE_DIRS} + ) + + # Add module system include directories to target + target_include_directories( + ${_name} + SYSTEM + PUBLIC + ${${itk-module}_SYSTEM_GENEX_INCLUDE_DIRS} + ) + + # Add module library directories to target + target_link_directories(${_name} PUBLIC ${${itk-module}_SYSTEM_LIBRARY_DIRS}) + target_link_options( ${_name} PUBLIC diff --git a/CMakeLists.txt b/CMakeLists.txt index 988ea72ad77..9f67c9f16db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -188,6 +188,11 @@ set(main_project_name ${_ITKModuleMacros_DEFAULT_LABEL}) #----------------------------------------------------------------------------- configure_file(CMake/ITKConfigVersion.cmake.in ITKConfigVersion.cmake @ONLY) +# +if(NOT ITK_LIBRARY_NAMESPACE) + set(ITK_LIBRARY_NAMESPACE ITK) +endif() + if(NOT CMAKE_INSTALL_LIBDIR) set(CMAKE_INSTALL_LIBDIR lib) endif() diff --git a/Examples/CMakeLists.txt b/Examples/CMakeLists.txt index d1a165fa3ef..d779164ba2c 100644 --- a/Examples/CMakeLists.txt +++ b/Examples/CMakeLists.txt @@ -6,7 +6,7 @@ if(NOT ITK_BUILD_DEFAULT_MODULES) endif() find_package(ITK REQUIRED) -include(${ITK_USE_FILE}) +itk_generate_factory_registration() set(ITK_TEST_DRIVER itkTestDriver) diff --git a/Examples/DataRepresentation/Image/CMakeLists.txt b/Examples/DataRepresentation/Image/CMakeLists.txt index 9c170d9a323..1116c47a5ba 100644 --- a/Examples/DataRepresentation/Image/CMakeLists.txt +++ b/Examples/DataRepresentation/Image/CMakeLists.txt @@ -1,37 +1,79 @@ project(ImageExamples) add_executable(Image1 Image1.cxx) -target_link_libraries(Image1 ${ITK_LIBRARIES}) +target_link_libraries(Image1 PRIVATE ITK::ITKCommonModule) add_executable(Image2 Image2.cxx) -target_link_libraries(Image2 ${ITK_LIBRARIES}) +target_link_libraries( + Image2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(Image3 Image3.cxx) -target_link_libraries(Image3 ${ITK_LIBRARIES}) +target_link_libraries(Image3 PRIVATE ITK::ITKCommonModule) add_executable(Image4 Image4.cxx) -target_link_libraries(Image4 ${ITK_LIBRARIES}) +target_link_libraries(Image4 PRIVATE ITK::ITKCommonModule) add_executable(VectorImage VectorImage.cxx) -target_link_libraries(VectorImage ${ITK_LIBRARIES}) +target_link_libraries(VectorImage PRIVATE ITK::ITKCommonModule) add_executable(ImageAdaptor2 ImageAdaptor2.cxx) -target_link_libraries(ImageAdaptor2 ${ITK_LIBRARIES}) +target_link_libraries( + ImageAdaptor2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageAdaptorsModule + ITK::ITKImageIntensityModule +) add_executable(ImageAdaptor3 ImageAdaptor3.cxx) -target_link_libraries(ImageAdaptor3 ${ITK_LIBRARIES}) +target_link_libraries( + ImageAdaptor3 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageAdaptorsModule + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule +) add_executable(ImageAdaptor4 ImageAdaptor4.cxx) -target_link_libraries(ImageAdaptor4 ${ITK_LIBRARIES}) +target_link_libraries( + ImageAdaptor4 + PRIVATE + ITK::ITKImageIO + ITK::ITKImageAdaptorsModule + ITK::ITKImageIntensityModule +) add_executable(Image5 Image5.cxx) -target_link_libraries(Image5 ${ITK_LIBRARIES}) +target_link_libraries( + Image5 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ImageAdaptor1 ImageAdaptor1.cxx) -target_link_libraries(ImageAdaptor1 ${ITK_LIBRARIES}) +target_link_libraries( + ImageAdaptor1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageAdaptorsModule +) add_executable(RGBImage RGBImage.cxx) -target_link_libraries(RGBImage ${ITK_LIBRARIES}) +target_link_libraries( + RGBImage + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) if(BUILD_TESTING) add_subdirectory(test) diff --git a/Examples/DataRepresentation/Mesh/CMakeLists.txt b/Examples/DataRepresentation/Mesh/CMakeLists.txt index fab2bda1cd5..a846dc7ccce 100644 --- a/Examples/DataRepresentation/Mesh/CMakeLists.txt +++ b/Examples/DataRepresentation/Mesh/CMakeLists.txt @@ -1,55 +1,105 @@ project(MeshExamples) add_executable(PointSet1 PointSet1.cxx) -target_link_libraries(PointSet1 ${ITK_LIBRARIES}) +target_link_libraries(PointSet1 PRIVATE ITK::ITKCommonModule) add_executable(PointSet2 PointSet2.cxx) -target_link_libraries(PointSet2 ${ITK_LIBRARIES}) +target_link_libraries(PointSet2 PRIVATE ITK::ITKCommonModule) add_executable(PointSet3 PointSet3.cxx) -target_link_libraries(PointSet3 ${ITK_LIBRARIES}) +target_link_libraries(PointSet3 PRIVATE ITK::ITKCommonModule) add_executable(RGBPointSet RGBPointSet.cxx) -target_link_libraries(RGBPointSet ${ITK_LIBRARIES}) +target_link_libraries(RGBPointSet PRIVATE ITK::ITKCommonModule) add_executable(PointSetWithVectors PointSetWithVectors.cxx) -target_link_libraries(PointSetWithVectors ${ITK_LIBRARIES}) +target_link_libraries(PointSetWithVectors PRIVATE ITK::ITKCommonModule) add_executable(PointSetWithCovariantVectors PointSetWithCovariantVectors.cxx) -target_link_libraries(PointSetWithCovariantVectors ${ITK_LIBRARIES}) +target_link_libraries(PointSetWithCovariantVectors PRIVATE ITK::ITKCommonModule) add_executable(Mesh1 Mesh1.cxx) -target_link_libraries(Mesh1 ${ITK_LIBRARIES}) +target_link_libraries(Mesh1 PRIVATE ITK::ITKMeshModule) add_executable(Mesh2 Mesh2.cxx) -target_link_libraries(Mesh2 ${ITK_LIBRARIES}) +target_link_libraries( + Mesh2 + PRIVATE + ITK::ITKCommonModule + ITK::ITKMeshModule +) add_executable(Mesh3 Mesh3.cxx) -target_link_libraries(Mesh3 ${ITK_LIBRARIES}) +target_link_libraries( + Mesh3 + PRIVATE + ITK::ITKCommonModule + ITK::ITKMeshModule +) add_executable(MeshTraits MeshTraits.cxx) -target_link_libraries(MeshTraits ${ITK_LIBRARIES}) +target_link_libraries( + MeshTraits + PRIVATE + ITK::ITKCommonModule + ITK::ITKMeshModule +) add_executable(MeshKComplex MeshKComplex.cxx) -target_link_libraries(MeshKComplex ${ITK_LIBRARIES}) +target_link_libraries( + MeshKComplex + PRIVATE + ITK::ITKCommonModule + ITK::ITKMeshModule +) add_executable(MeshPolyLine MeshPolyLine.cxx) -target_link_libraries(MeshPolyLine ${ITK_LIBRARIES}) +target_link_libraries( + MeshPolyLine + PRIVATE + ITK::ITKCommonModule + ITK::ITKMeshModule +) add_executable(MeshCellsIteration MeshCellsIteration.cxx) -target_link_libraries(MeshCellsIteration ${ITK_LIBRARIES}) +target_link_libraries( + MeshCellsIteration + PRIVATE + ITK::ITKCommonModule + ITK::ITKMeshModule +) add_executable(MeshCellVisitor MeshCellVisitor.cxx) -target_link_libraries(MeshCellVisitor ${ITK_LIBRARIES}) +target_link_libraries( + MeshCellVisitor + PRIVATE + ITK::ITKCommonModule + ITK::ITKMeshModule +) add_executable(MeshCellVisitor2 MeshCellVisitor2.cxx) -target_link_libraries(MeshCellVisitor2 ${ITK_LIBRARIES}) +target_link_libraries( + MeshCellVisitor2 + PRIVATE + ITK::ITKCommonModule + ITK::ITKMeshModule +) add_executable(AutomaticMesh AutomaticMesh.cxx) -target_link_libraries(AutomaticMesh ${ITK_LIBRARIES}) +target_link_libraries( + AutomaticMesh + PRIVATE + ITK::ITKCommonModule + ITK::ITKMeshModule +) add_executable(ImageToPointSet ImageToPointSet.cxx) -target_link_libraries(ImageToPointSet ${ITK_LIBRARIES}) +target_link_libraries( + ImageToPointSet + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) if(BUILD_TESTING) add_subdirectory(test) diff --git a/Examples/DataRepresentation/Path/CMakeLists.txt b/Examples/DataRepresentation/Path/CMakeLists.txt index 81a77d65e39..45c9997e287 100644 --- a/Examples/DataRepresentation/Path/CMakeLists.txt +++ b/Examples/DataRepresentation/Path/CMakeLists.txt @@ -1,7 +1,13 @@ project(PathExamples) add_executable(PolyLineParametricPath1 PolyLineParametricPath1.cxx) -target_link_libraries(PolyLineParametricPath1 ${ITK_LIBRARIES}) +target_link_libraries( + PolyLineParametricPath1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKPathModule +) if(BUILD_TESTING) add_subdirectory(test) diff --git a/Examples/Filtering/CMakeLists.txt b/Examples/Filtering/CMakeLists.txt index 97feabff359..94f40ff184a 100644 --- a/Examples/Filtering/CMakeLists.txt +++ b/Examples/Filtering/CMakeLists.txt @@ -1,98 +1,249 @@ project(FilteringExamples) add_executable(CompositeFilterExample CompositeFilterExample.cxx) -target_link_libraries(CompositeFilterExample ${ITK_LIBRARIES}) +target_link_libraries( + CompositeFilterExample + PRIVATE + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule + ITK::ITKThresholdingModule + ITK::ITKImageIO +) add_executable(FlipImageFilter FlipImageFilter.cxx) -target_link_libraries(FlipImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + FlipImageFilter + PRIVATE + ITK::ITKImageGridModule + ITK::ITKImageIO +) add_executable(FFTImageFilter FFTImageFilter.cxx) -target_link_libraries(FFTImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + FFTImageFilter + PRIVATE + ITK::ITKFFTModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) if(ITK_USE_FFTWF) add_executable(FFTDirectInverse2 FFTDirectInverse2.cxx) - target_link_libraries(FFTDirectInverse2 ${ITK_LIBRARIES}) + target_link_libraries( + FFTDirectInverse2 + PRIVATE + ITK::ITKFFTModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO + ) endif() add_executable(GradientMagnitudeImageFilter GradientMagnitudeImageFilter.cxx) -target_link_libraries(GradientMagnitudeImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + GradientMagnitudeImageFilter + PRIVATE + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable( GradientMagnitudeRecursiveGaussianImageFilter GradientMagnitudeRecursiveGaussianImageFilter.cxx ) target_link_libraries( GradientMagnitudeRecursiveGaussianImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO ) add_executable( GradientRecursiveGaussianImageFilter GradientRecursiveGaussianImageFilter.cxx ) -target_link_libraries(GradientRecursiveGaussianImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + GradientRecursiveGaussianImageFilter + PRIVATE + ITK::ITKImageGradientModule + ITK::ITKImageIO +) add_executable( GrayscaleFunctionDilateImageFilter GrayscaleFunctionDilateImageFilter.cxx ) -target_link_libraries(GrayscaleFunctionDilateImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + GrayscaleFunctionDilateImageFilter + PRIVATE + ITK::ITKMathematicalMorphologyModule + ITK::ITKImageIO +) add_executable(BinaryThresholdImageFilter BinaryThresholdImageFilter.cxx) -target_link_libraries(BinaryThresholdImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + BinaryThresholdImageFilter + PRIVATE + ITK::ITKThresholdingModule + ITK::ITKImageIO +) add_executable(BinaryMedianImageFilter BinaryMedianImageFilter.cxx) -target_link_libraries(BinaryMedianImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + BinaryMedianImageFilter + PRIVATE + ITK::ITKLabelVotingModule + ITK::ITKImageIO +) add_executable(OrientImageFilter OrientImageFilter.cxx) -target_link_libraries(OrientImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + OrientImageFilter + PRIVATE + ITK::ITKImageGridModule + ITK::ITKImageIO +) add_executable(OtsuThresholdImageFilter OtsuThresholdImageFilter.cxx) -target_link_libraries(OtsuThresholdImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + OtsuThresholdImageFilter + PRIVATE + ITK::ITKThresholdingModule + ITK::ITKImageIO +) add_executable( OtsuMultipleThresholdImageFilter OtsuMultipleThresholdImageFilter.cxx ) -target_link_libraries(OtsuMultipleThresholdImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + OtsuMultipleThresholdImageFilter + PRIVATE + ITK::ITKStatisticsModule + ITK::ITKThresholdingModule + ITK::ITKImageIO +) add_executable(ThresholdImageFilter ThresholdImageFilter.cxx) -target_link_libraries(ThresholdImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + ThresholdImageFilter + PRIVATE + ITK::ITKThresholdingModule + ITK::ITKImageIO +) add_executable(CastingImageFilters CastingImageFilters.cxx) -target_link_libraries(CastingImageFilters ${ITK_LIBRARIES}) +target_link_libraries( + CastingImageFilters + PRIVATE + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(CannyEdgeDetectionImageFilter CannyEdgeDetectionImageFilter.cxx) -target_link_libraries(CannyEdgeDetectionImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + CannyEdgeDetectionImageFilter + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(MedianImageFilter MedianImageFilter.cxx) -target_link_libraries(MedianImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + MedianImageFilter + PRIVATE + ITK::ITKSmoothingModule + ITK::ITKImageIO +) add_executable(MeanImageFilter MeanImageFilter.cxx) -target_link_libraries(MeanImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + MeanImageFilter + PRIVATE + ITK::ITKSmoothingModule + ITK::ITKImageIO +) add_executable( MathematicalMorphologyBinaryFilters MathematicalMorphologyBinaryFilters.cxx ) -target_link_libraries(MathematicalMorphologyBinaryFilters ${ITK_LIBRARIES}) +target_link_libraries( + MathematicalMorphologyBinaryFilters + PRIVATE + ITK::ITKBinaryMathematicalMorphologyModule + ITK::ITKMathematicalMorphologyModule + ITK::ITKThresholdingModule + ITK::ITKImageIO +) add_executable( MathematicalMorphologyGrayscaleFilters MathematicalMorphologyGrayscaleFilters.cxx ) -target_link_libraries(MathematicalMorphologyGrayscaleFilters ${ITK_LIBRARIES}) +target_link_libraries( + MathematicalMorphologyGrayscaleFilters + PRIVATE + ITK::ITKMathematicalMorphologyModule + ITK::ITKImageIO +) add_executable( BinaryMinMaxCurvatureFlowImageFilter BinaryMinMaxCurvatureFlowImageFilter.cxx ) -target_link_libraries(BinaryMinMaxCurvatureFlowImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + BinaryMinMaxCurvatureFlowImageFilter + PRIVATE + ITK::ITKCurvatureFlowModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(DiscreteGaussianImageFilter DiscreteGaussianImageFilter.cxx) -target_link_libraries(DiscreteGaussianImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + DiscreteGaussianImageFilter + PRIVATE + ITK::ITKImageIntensityModule + ITK::ITKSmoothingModule + ITK::ITKImageIO +) add_executable(GaussianBlurImageFunction GaussianBlurImageFunction.cxx) -target_link_libraries(GaussianBlurImageFunction ${ITK_LIBRARIES}) +target_link_libraries( + GaussianBlurImageFunction + PRIVATE + ITK::ITKImageFunctionModule + ITK::ITKImageIO +) add_executable( LaplacianRecursiveGaussianImageFilter1 LaplacianRecursiveGaussianImageFilter1.cxx ) -target_link_libraries(LaplacianRecursiveGaussianImageFilter1 ${ITK_LIBRARIES}) +target_link_libraries( + LaplacianRecursiveGaussianImageFilter1 + PRIVATE + ITK::ITKImageIntensityModule + ITK::ITKSmoothingModule + ITK::ITKImageIO +) add_executable(ScaleSpaceGenerator2D ScaleSpaceGenerator2D.cxx) -target_link_libraries(ScaleSpaceGenerator2D ${ITK_LIBRARIES}) +target_link_libraries( + ScaleSpaceGenerator2D + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIO +) add_executable(BinomialBlurImageFilter BinomialBlurImageFilter.cxx) -target_link_libraries(BinomialBlurImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + BinomialBlurImageFilter + PRIVATE + ITK::ITKImageIntensityModule + ITK::ITKSmoothingModule + ITK::ITKImageIO +) add_executable( CurvatureAnisotropicDiffusionImageFilter CurvatureAnisotropicDiffusionImageFilter.cxx ) -target_link_libraries(CurvatureAnisotropicDiffusionImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + CurvatureAnisotropicDiffusionImageFilter + PRIVATE + ITK::ITKAnisotropicSmoothingModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable( VectorGradientAnisotropicDiffusionImageFilter VectorGradientAnisotropicDiffusionImageFilter.cxx ) target_link_libraries( VectorGradientAnisotropicDiffusionImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKAnisotropicSmoothingModule + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO ) add_executable( VectorCurvatureAnisotropicDiffusionImageFilter @@ -100,32 +251,79 @@ add_executable( ) target_link_libraries( VectorCurvatureAnisotropicDiffusionImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKAnisotropicSmoothingModule + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO ) add_executable(RGBToGrayscale RGBToGrayscale.cxx) -target_link_libraries(RGBToGrayscale ${ITK_LIBRARIES}) +target_link_libraries( + RGBToGrayscale + PRIVATE + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(BilateralImageFilter BilateralImageFilter.cxx) -target_link_libraries(BilateralImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + BilateralImageFilter + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(ResampleImageFilter2 ResampleImageFilter2.cxx) -target_link_libraries(ResampleImageFilter2 ${ITK_LIBRARIES}) +target_link_libraries( + ResampleImageFilter2 + PRIVATE + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable( GradientAnisotropicDiffusionImageFilter GradientAnisotropicDiffusionImageFilter.cxx ) -target_link_libraries(GradientAnisotropicDiffusionImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + GradientAnisotropicDiffusionImageFilter + PRIVATE + ITK::ITKAnisotropicSmoothingModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(CurvatureFlowImageFilter CurvatureFlowImageFilter.cxx) -target_link_libraries(CurvatureFlowImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + CurvatureFlowImageFilter + PRIVATE + ITK::ITKCurvatureFlowModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(GradientVectorFlowImageFilter GradientVectorFlowImageFilter.cxx) -target_link_libraries(GradientVectorFlowImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + GradientVectorFlowImageFilter + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(SigmoidImageFilter SigmoidImageFilter.cxx) -target_link_libraries(SigmoidImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + SigmoidImageFilter + PRIVATE + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable( RGBCurvatureAnisotropicDiffusionImageFilter RGBCurvatureAnisotropicDiffusionImageFilter.cxx ) target_link_libraries( RGBCurvatureAnisotropicDiffusionImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKAnisotropicSmoothingModule + ITK::ITKImageIO ) add_executable( RGBGradientAnisotropicDiffusionImageFilter @@ -133,134 +331,342 @@ add_executable( ) target_link_libraries( RGBGradientAnisotropicDiffusionImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKAnisotropicSmoothingModule + ITK::ITKImageIO ) add_executable( SignedDanielssonDistanceMapImageFilter SignedDanielssonDistanceMapImageFilter.cxx ) -target_link_libraries(SignedDanielssonDistanceMapImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + SignedDanielssonDistanceMapImageFilter + PRIVATE + ITK::ITKDistanceMapModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable( SecondDerivativeRecursiveGaussianImageFilter SecondDerivativeRecursiveGaussianImageFilter.cxx ) target_link_libraries( SecondDerivativeRecursiveGaussianImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKSmoothingModule + ITK::ITKImageIO ) add_executable(DerivativeImageFilter DerivativeImageFilter.cxx) -target_link_libraries(DerivativeImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + DerivativeImageFilter + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable( DanielssonDistanceMapImageFilter DanielssonDistanceMapImageFilter.cxx ) -target_link_libraries(DanielssonDistanceMapImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + DanielssonDistanceMapImageFilter + PRIVATE + ITK::ITKConnectedComponentsModule + ITK::ITKDistanceMapModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(AntiAliasBinaryImageFilter AntiAliasBinaryImageFilter.cxx) -target_link_libraries(AntiAliasBinaryImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + AntiAliasBinaryImageFilter + PRIVATE + ITK::ITKAntiAliasModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(ResampleImageFilter ResampleImageFilter.cxx) -target_link_libraries(ResampleImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + ResampleImageFilter + PRIVATE + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable( SmoothingRecursiveGaussianImageFilter SmoothingRecursiveGaussianImageFilter.cxx ) -target_link_libraries(SmoothingRecursiveGaussianImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + SmoothingRecursiveGaussianImageFilter + PRIVATE + ITK::ITKImageIntensityModule + ITK::ITKSmoothingModule + ITK::ITKImageIO +) add_executable( SmoothingRecursiveGaussianImageFilter2 SmoothingRecursiveGaussianImageFilter2.cxx ) -target_link_libraries(SmoothingRecursiveGaussianImageFilter2 ${ITK_LIBRARIES}) +target_link_libraries( + SmoothingRecursiveGaussianImageFilter2 + PRIVATE + ITK::ITKImageIntensityModule + ITK::ITKSmoothingModule + ITK::ITKImageIO +) add_executable( LaplacianRecursiveGaussianImageFilter2 LaplacianRecursiveGaussianImageFilter2.cxx ) -target_link_libraries(LaplacianRecursiveGaussianImageFilter2 ${ITK_LIBRARIES}) +target_link_libraries( + LaplacianRecursiveGaussianImageFilter2 + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(MorphologicalImageEnhancement MorphologicalImageEnhancement.cxx) -target_link_libraries(MorphologicalImageEnhancement ${ITK_LIBRARIES}) +target_link_libraries( + MorphologicalImageEnhancement + PRIVATE + ITK::ITKIOPNGModule + ITK::ITKImageIntensityModule + ITK::ITKMathematicalMorphologyModule + ITK::ITKImageIO +) add_executable( MinMaxCurvatureFlowImageFilter MinMaxCurvatureFlowImageFilter.cxx ) -target_link_libraries(MinMaxCurvatureFlowImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + MinMaxCurvatureFlowImageFilter + PRIVATE + ITK::ITKCurvatureFlowModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable( FFTImageFilterFourierDomainFiltering FFTImageFilterFourierDomainFiltering.cxx ) -target_link_libraries(FFTImageFilterFourierDomainFiltering ${ITK_LIBRARIES}) +target_link_libraries( + FFTImageFilterFourierDomainFiltering + PRIVATE + ITK::ITKFFTModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(LaplacianImageFilter LaplacianImageFilter.cxx) -target_link_libraries(LaplacianImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + LaplacianImageFilter + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(ResampleImageFilter3 ResampleImageFilter3.cxx) -target_link_libraries(ResampleImageFilter3 ${ITK_LIBRARIES}) +target_link_libraries( + ResampleImageFilter3 + PRIVATE + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable(ResampleImageFilter4 ResampleImageFilter4.cxx) -target_link_libraries(ResampleImageFilter4 ${ITK_LIBRARIES}) +target_link_libraries( + ResampleImageFilter4 + PRIVATE + ITK::ITKImageGridModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable( VotingBinaryHoleFillingImageFilter VotingBinaryHoleFillingImageFilter.cxx ) -target_link_libraries(VotingBinaryHoleFillingImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + VotingBinaryHoleFillingImageFilter + PRIVATE + ITK::ITKLabelVotingModule + ITK::ITKImageIO +) add_executable( VotingBinaryIterativeHoleFillingImageFilter VotingBinaryIterativeHoleFillingImageFilter.cxx ) target_link_libraries( VotingBinaryIterativeHoleFillingImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKLabelVotingModule + ITK::ITKImageIO ) add_executable(ResampleImageFilter5 ResampleImageFilter5.cxx) -target_link_libraries(ResampleImageFilter5 ${ITK_LIBRARIES}) +target_link_libraries( + ResampleImageFilter5 + PRIVATE + ITK::ITKImageGridModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable(ResampleImageFilter6 ResampleImageFilter6.cxx) -target_link_libraries(ResampleImageFilter6 ${ITK_LIBRARIES}) +target_link_libraries( + ResampleImageFilter6 + PRIVATE + ITK::ITKImageGridModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable(ResampleImageFilter8 ResampleImageFilter8.cxx) -target_link_libraries(ResampleImageFilter8 ${ITK_LIBRARIES}) +target_link_libraries( + ResampleImageFilter8 + PRIVATE + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable(ResampleImageFilter9 ResampleImageFilter9.cxx) -target_link_libraries(ResampleImageFilter9 ${ITK_LIBRARIES}) +target_link_libraries( + ResampleImageFilter9 + PRIVATE + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable(ResampleVolumesToBeIsotropic ResampleVolumesToBeIsotropic.cxx) -target_link_libraries(ResampleVolumesToBeIsotropic ${ITK_LIBRARIES}) +target_link_libraries( + ResampleVolumesToBeIsotropic + PRIVATE + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKSmoothingModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable(SubsampleVolume SubsampleVolume.cxx) -target_link_libraries(SubsampleVolume ${ITK_LIBRARIES}) +target_link_libraries( + SubsampleVolume + PRIVATE + ITK::ITKImageGridModule + ITK::ITKSmoothingModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable(SpatialObjectToImage1 SpatialObjectToImage1.cxx) -target_link_libraries(SpatialObjectToImage1 ${ITK_LIBRARIES}) +target_link_libraries( + SpatialObjectToImage1 + PRIVATE + ITK::ITKSpatialObjectsModule + ITK::ITKImageIO +) add_executable(SpatialObjectToImage2 SpatialObjectToImage2.cxx) -target_link_libraries(SpatialObjectToImage2 ${ITK_LIBRARIES}) +target_link_libraries( + SpatialObjectToImage2 + PRIVATE + ITK::ITKSpatialObjectsModule + ITK::ITKImageIO +) add_executable(SpatialObjectToImage3 SpatialObjectToImage3.cxx) -target_link_libraries(SpatialObjectToImage3 ${ITK_LIBRARIES}) +target_link_libraries( + SpatialObjectToImage3 + PRIVATE + ITK::ITKSpatialObjectsModule + ITK::ITKImageIO +) add_executable( LaplacianSharpeningImageFilter LaplacianSharpeningImageFilter.cxx ) -target_link_libraries(LaplacianSharpeningImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + LaplacianSharpeningImageFilter + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(VectorIndexSelection VectorIndexSelection.cxx) -target_link_libraries(VectorIndexSelection ${ITK_LIBRARIES}) +target_link_libraries( + VectorIndexSelection + PRIVATE + ITK::ITKImageIntensityModule + ITK::ITKImageIO +) add_executable(VesselnessMeasureImageFilter VesselnessMeasureImageFilter.cxx) -target_link_libraries(VesselnessMeasureImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + VesselnessMeasureImageFilter + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIO +) add_executable( DiffusionTensor3DReconstructionImageFilter DiffusionTensor3DReconstructionImageFilter.cxx ) target_link_libraries( DiffusionTensor3DReconstructionImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKDiffusionTensorImageModule + ITK::ITKIONRRDModule + ITK::ITKImageIO ) add_executable(FFTDirectInverse FFTDirectInverse.cxx) -target_link_libraries(FFTDirectInverse ${ITK_LIBRARIES}) +target_link_libraries( + FFTDirectInverse + PRIVATE + ITK::ITKFFTModule + ITK::ITKImageGridModule + ITK::ITKImageIO +) add_executable( ZeroCrossingBasedEdgeDetectionImageFilter ZeroCrossingBasedEdgeDetectionImageFilter.cxx ) target_link_libraries( ZeroCrossingBasedEdgeDetectionImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKImageFeatureModule + ITK::ITKImageIntensityModule + ITK::ITKImageIO ) add_executable(WarpImageFilter1 WarpImageFilter1.cxx) -target_link_libraries(WarpImageFilter1 ${ITK_LIBRARIES}) +target_link_libraries( + WarpImageFilter1 + PRIVATE + ITK::ITKImageGridModule + ITK::ITKImageIO +) add_executable(SurfaceExtraction SurfaceExtraction.cxx) -target_link_libraries(SurfaceExtraction ${ITK_LIBRARIES}) +target_link_libraries( + SurfaceExtraction + PRIVATE + ITK::ITKMeshModule + ITK::ITKImageIO +) add_executable( DigitallyReconstructedRadiograph1 DigitallyReconstructedRadiograph1.cxx ) -target_link_libraries(DigitallyReconstructedRadiograph1 ${ITK_LIBRARIES}) +target_link_libraries( + DigitallyReconstructedRadiograph1 + PRIVATE + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKTransformModule + ITK::ITKImageIO +) add_executable(ResampleImageFilter7 ResampleImageFilter7.cxx) -target_link_libraries(ResampleImageFilter7 ${ITK_LIBRARIES}) +target_link_libraries( + ResampleImageFilter7 + PRIVATE + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKTransformModule + ITK::ITKImageIO +) if(BUILD_TESTING) add_subdirectory(test) diff --git a/Examples/IO/CMakeLists.txt b/Examples/IO/CMakeLists.txt index 2f24973a095..8d204099d93 100644 --- a/Examples/IO/CMakeLists.txt +++ b/Examples/IO/CMakeLists.txt @@ -1,109 +1,275 @@ project(IOExamples) add_executable(ImageReadWrite ImageReadWrite.cxx) -target_link_libraries(ImageReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + ImageReadWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ImageReadCastWrite ImageReadCastWrite.cxx) -target_link_libraries(ImageReadCastWrite ${ITK_LIBRARIES}) +target_link_libraries( + ImageReadCastWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageIntensityModule +) add_executable( ImageReadExtractFilterInsertWrite ImageReadExtractFilterInsertWrite.cxx ) -target_link_libraries(ImageReadExtractFilterInsertWrite ${ITK_LIBRARIES}) +target_link_libraries( + ImageReadExtractFilterInsertWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageGridModule + ITK::ITKSmoothingModule +) add_executable( ImageReadRegionOfInterestWrite ImageReadRegionOfInterestWrite.cxx ) -target_link_libraries(ImageReadRegionOfInterestWrite ${ITK_LIBRARIES}) +target_link_libraries( + ImageReadRegionOfInterestWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageGridModule +) add_executable(RGBImageReadWrite RGBImageReadWrite.cxx) -target_link_libraries(RGBImageReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + RGBImageReadWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(CovariantVectorImageRead CovariantVectorImageRead.cxx) -target_link_libraries(CovariantVectorImageRead ${ITK_LIBRARIES}) +target_link_libraries( + CovariantVectorImageRead + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageIntensityModule +) add_executable( CovariantVectorImageExtractComponent CovariantVectorImageExtractComponent.cxx ) -target_link_libraries(CovariantVectorImageExtractComponent ${ITK_LIBRARIES}) +target_link_libraries( + CovariantVectorImageExtractComponent + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageIntensityModule +) add_executable(VectorImageReadWrite VectorImageReadWrite.cxx) -target_link_libraries(VectorImageReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + VectorImageReadWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ComplexImageReadWrite ComplexImageReadWrite.cxx) -target_link_libraries(ComplexImageReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + ComplexImageReadWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ImageReadExportVTK ImageReadExportVTK.cxx) -target_link_libraries(ImageReadExportVTK ${ITK_LIBRARIES}) +target_link_libraries( + ImageReadExportVTK + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIOVTKModule +) add_executable(RGBImageSeriesReadWrite RGBImageSeriesReadWrite.cxx) -target_link_libraries(RGBImageSeriesReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + RGBImageSeriesReadWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIOPNGModule +) add_executable(ImageSeriesReadWrite ImageSeriesReadWrite.cxx) -target_link_libraries(ImageSeriesReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + ImageSeriesReadWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIOPNGModule +) add_executable(ImageSeriesReadWrite2 ImageSeriesReadWrite2.cxx) -target_link_libraries(ImageSeriesReadWrite2 ${ITK_LIBRARIES}) +target_link_libraries( + ImageSeriesReadWrite2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIOPNGModule +) add_executable(ImageReadImageSeriesWrite ImageReadImageSeriesWrite.cxx) -target_link_libraries(ImageReadImageSeriesWrite ${ITK_LIBRARIES}) +target_link_libraries( + ImageReadImageSeriesWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(DicomSeriesReadImageWrite2 DicomSeriesReadImageWrite2.cxx) -target_link_libraries(DicomSeriesReadImageWrite2 ${ITK_LIBRARIES}) +target_link_libraries( + DicomSeriesReadImageWrite2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIOGDCMModule +) add_executable( DicomSeriesReadGaussianImageWrite DicomSeriesReadGaussianImageWrite.cxx ) -target_link_libraries(DicomSeriesReadGaussianImageWrite ${ITK_LIBRARIES}) +target_link_libraries( + DicomSeriesReadGaussianImageWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKIOGDCMModule + ITK::ITKSmoothingModule +) add_executable(DicomSeriesReadPrintTags DicomSeriesReadPrintTags.cxx) -target_link_libraries(DicomSeriesReadPrintTags ${ITK_LIBRARIES}) +target_link_libraries( + DicomSeriesReadPrintTags + PRIVATE + ITK::ITKImageIO + ITK::ITKIOGDCMModule +) add_executable(DicomImageReadPrintTags DicomImageReadPrintTags.cxx) -target_link_libraries(DicomImageReadPrintTags ${ITK_LIBRARIES}) +target_link_libraries( + DicomImageReadPrintTags + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIOGDCMModule + ITK::ITKGDCMModule +) add_executable(DicomImageReadWrite DicomImageReadWrite.cxx) -target_link_libraries(DicomImageReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + DicomImageReadWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKIOGDCMModule + ITK::ITKImageIntensityModule +) add_executable(ImageReadDicomSeriesWrite ImageReadDicomSeriesWrite.cxx) -target_link_libraries(ImageReadDicomSeriesWrite ${ITK_LIBRARIES}) +target_link_libraries( + ImageReadDicomSeriesWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIOGDCMModule +) add_executable( DicomImageReadChangeHeaderWrite DicomImageReadChangeHeaderWrite.cxx ) -target_link_libraries(DicomImageReadChangeHeaderWrite ${ITK_LIBRARIES}) +target_link_libraries( + DicomImageReadChangeHeaderWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIOGDCMModule +) add_executable(DicomSeriesReadSeriesWrite DicomSeriesReadSeriesWrite.cxx) -target_link_libraries(DicomSeriesReadSeriesWrite ${ITK_LIBRARIES}) +target_link_libraries( + DicomSeriesReadSeriesWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKIOGDCMModule +) add_executable(DicomPrintPatientInformation DicomPrintPatientInformation.cxx) -target_link_libraries(DicomPrintPatientInformation ${ITK_LIBRARIES}) +target_link_libraries( + DicomPrintPatientInformation + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIOGDCMModule +) add_executable(TransformReadWrite TransformReadWrite.cxx) -target_link_libraries(TransformReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + TransformReadWrite + PRIVATE + ITK::ITKTransformIO + ITK::ITKTransformModule + ITK::ITKTransformFactoryModule +) add_executable(VisibleHumanStreamReadWrite VisibleHumanStreamReadWrite.cxx) -target_link_libraries(VisibleHumanStreamReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + VisibleHumanStreamReadWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKIORAWModule + ITK::ITKImageComposeModule + ITK::ITKImageGridModule + ITK::ITKSmoothingModule +) add_executable(VisibleHumanPasteWrite VisibleHumanPasteWrite.cxx) -target_link_libraries(VisibleHumanPasteWrite ${ITK_LIBRARIES}) +target_link_libraries( + VisibleHumanPasteWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageAdaptorsModule + ITK::ITKImageComposeModule + ITK::ITKImageGradientModule +) add_executable(CovariantVectorImageWrite CovariantVectorImageWrite.cxx) -target_link_libraries(CovariantVectorImageWrite ${ITK_LIBRARIES}) +target_link_libraries( + CovariantVectorImageWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKImageGradientModule +) add_executable(ImageReadExtractWrite ImageReadExtractWrite.cxx) -target_link_libraries(ImageReadExtractWrite ${ITK_LIBRARIES}) +target_link_libraries( + ImageReadExtractWrite + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(IOPlugin IOPlugin.cxx) -target_link_libraries(IOPlugin ${ITK_LIBRARIES}) +target_link_libraries(IOPlugin PRIVATE ITK::ITKImageIO) add_executable(IOFactoryRegistration IOFactoryRegistration.cxx) -target_link_libraries(IOFactoryRegistration ${ITK_LIBRARIES}) +target_link_libraries(IOFactoryRegistration PRIVATE ITK::ITKImageIO) if(BUILD_TESTING) add_subdirectory(test) diff --git a/Examples/IO/XML/CMakeLists.txt b/Examples/IO/XML/CMakeLists.txt index 3d6fcc4b1f4..34b0c1b01de 100644 --- a/Examples/IO/XML/CMakeLists.txt +++ b/Examples/IO/XML/CMakeLists.txt @@ -1,5 +1,10 @@ add_executable(DOMFindDemo DOMFindDemo.cxx) -target_link_libraries(DOMFindDemo ${ITK_LIBRARIES}) +target_link_libraries( + DOMFindDemo + PRIVATE + ITK::ITKCommonModule + ITK::ITKIOXMLModule +) add_executable( ParticleSwarmOptimizerReadWrite @@ -9,4 +14,10 @@ add_executable( itkParticleSwarmOptimizerSAXReader.cxx itkParticleSwarmOptimizerSAXWriter.cxx ) -target_link_libraries(ParticleSwarmOptimizerReadWrite ${ITK_LIBRARIES}) +target_link_libraries( + ParticleSwarmOptimizerReadWrite + PRIVATE + ITK::ITKCommonModule + ITK::ITKOptimizersModule + ITK::ITKIOXMLModule +) diff --git a/Examples/Iterators/CMakeLists.txt b/Examples/Iterators/CMakeLists.txt index 6c8ee0139a5..faa4a519543 100644 --- a/Examples/Iterators/CMakeLists.txt +++ b/Examples/Iterators/CMakeLists.txt @@ -1,49 +1,127 @@ project(IteratorExamples) add_executable(NeighborhoodIterators4 NeighborhoodIterators4.cxx) -target_link_libraries(NeighborhoodIterators4 ${ITK_LIBRARIES}) +target_link_libraries( + NeighborhoodIterators4 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageIntensityModule +) add_executable(NeighborhoodIterators5 NeighborhoodIterators5.cxx) -target_link_libraries(NeighborhoodIterators5 ${ITK_LIBRARIES}) +target_link_libraries( + NeighborhoodIterators5 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageIntensityModule +) add_executable( ImageRandomConstIteratorWithIndex ImageRandomConstIteratorWithIndex.cxx ) -target_link_libraries(ImageRandomConstIteratorWithIndex ${ITK_LIBRARIES}) +target_link_libraries( + ImageRandomConstIteratorWithIndex + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(NeighborhoodIterators1 NeighborhoodIterators1.cxx) -target_link_libraries(NeighborhoodIterators1 ${ITK_LIBRARIES}) +target_link_libraries( + NeighborhoodIterators1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageIntensityModule +) add_executable(NeighborhoodIterators2 NeighborhoodIterators2.cxx) -target_link_libraries(NeighborhoodIterators2 ${ITK_LIBRARIES}) +target_link_libraries( + NeighborhoodIterators2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageIntensityModule +) add_executable(NeighborhoodIterators3 NeighborhoodIterators3.cxx) -target_link_libraries(NeighborhoodIterators3 ${ITK_LIBRARIES}) +target_link_libraries( + NeighborhoodIterators3 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageIntensityModule +) add_executable(NeighborhoodIterators6 NeighborhoodIterators6.cxx) -target_link_libraries(NeighborhoodIterators6 ${ITK_LIBRARIES}) +target_link_libraries( + NeighborhoodIterators6 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKFastMarchingModule + ITK::ITKImageIntensityModule + ITK::ITKTestKernelModule +) add_executable(ImageRegionIteratorWithIndex ImageRegionIteratorWithIndex.cxx) -target_link_libraries(ImageRegionIteratorWithIndex ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegionIteratorWithIndex + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ImageRegionIterator ImageRegionIterator.cxx) -target_link_libraries(ImageRegionIterator ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegionIterator + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ImageLinearIteratorWithIndex2 ImageLinearIteratorWithIndex2.cxx) -target_link_libraries(ImageLinearIteratorWithIndex2 ${ITK_LIBRARIES}) +target_link_libraries( + ImageLinearIteratorWithIndex2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ImageLinearIteratorWithIndex ImageLinearIteratorWithIndex.cxx) -target_link_libraries(ImageLinearIteratorWithIndex ${ITK_LIBRARIES}) +target_link_libraries( + ImageLinearIteratorWithIndex + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ImageSliceIteratorWithIndex ImageSliceIteratorWithIndex.cxx) -target_link_libraries(ImageSliceIteratorWithIndex ${ITK_LIBRARIES}) +target_link_libraries( + ImageSliceIteratorWithIndex + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ShapedNeighborhoodIterators1 ShapedNeighborhoodIterators1.cxx) -target_link_libraries(ShapedNeighborhoodIterators1 ${ITK_LIBRARIES}) +target_link_libraries( + ShapedNeighborhoodIterators1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) add_executable(ShapedNeighborhoodIterators2 ShapedNeighborhoodIterators2.cxx) -target_link_libraries(ShapedNeighborhoodIterators2 ${ITK_LIBRARIES}) +target_link_libraries( + ShapedNeighborhoodIterators2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule +) if(BUILD_TESTING) add_subdirectory(test) diff --git a/Examples/Numerics/CMakeLists.txt b/Examples/Numerics/CMakeLists.txt index abc0ee787ad..87595892ada 100644 --- a/Examples/Numerics/CMakeLists.txt +++ b/Examples/Numerics/CMakeLists.txt @@ -1,4 +1,4 @@ project(NumericsExamples) add_executable(FourierDescriptors1 FourierDescriptors1.cxx) -target_link_libraries(FourierDescriptors1 ${ITK_LIBRARIES}) +target_link_libraries(FourierDescriptors1 PRIVATE ITK::ITKCommonModule) diff --git a/Examples/RegistrationITKv4/CMakeLists.txt b/Examples/RegistrationITKv4/CMakeLists.txt index f84003b6b6b..8a37dece36b 100644 --- a/Examples/RegistrationITKv4/CMakeLists.txt +++ b/Examples/RegistrationITKv4/CMakeLists.txt @@ -1,67 +1,319 @@ project(ITKv4ImageRegistration) add_executable(ImageRegistration3 ImageRegistration3.cxx) -target_link_libraries(ImageRegistration3 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration3 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration5 ImageRegistration5.cxx) -target_link_libraries(ImageRegistration5 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration5 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration6 ImageRegistration6.cxx) -target_link_libraries(ImageRegistration6 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration6 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationCommonModule + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration8 ImageRegistration8.cxx) -target_link_libraries(ImageRegistration8 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration8 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationCommonModule + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration9 ImageRegistration9.cxx) -target_link_libraries(ImageRegistration9 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration9 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationCommonModule + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration10 ImageRegistration10.cxx) -target_link_libraries(ImageRegistration10 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration10 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(DeformableRegistration4 DeformableRegistration4.cxx) -target_link_libraries(DeformableRegistration4 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration4 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKDisplacementFieldModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration4 ImageRegistration4.cxx) -target_link_libraries(ImageRegistration4 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration4 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration7 ImageRegistration7.cxx) -target_link_libraries(ImageRegistration7 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration7 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationCommonModule + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration11 ImageRegistration11.cxx) -target_link_libraries(ImageRegistration11 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration11 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKStatisticsModule + ITK::ITKTransformModule +) add_executable(ImageRegistration12 ImageRegistration12.cxx) -target_link_libraries(ImageRegistration12 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration12 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationCommonModule + ITK::ITKRegistrationMethodsv4Module + ITK::ITKSpatialObjectsModule + ITK::ITKTransformModule +) add_executable(ImageRegistration13 ImageRegistration13.cxx) -target_link_libraries(ImageRegistration13 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration13 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationCommonModule + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration14 ImageRegistration14.cxx) -target_link_libraries(ImageRegistration14 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration14 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKStatisticsModule + ITK::ITKTransformModule +) add_executable(ImageRegistration15 ImageRegistration15.cxx) -target_link_libraries(ImageRegistration15 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration15 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKStatisticsModule + ITK::ITKTransformModule +) add_executable(ImageRegistration16 ImageRegistration16.cxx) -target_link_libraries(ImageRegistration16 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration16 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(ImageRegistration18 ImageRegistration18.cxx) -target_link_libraries(ImageRegistration18 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration18 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(ImageRegistration19 ImageRegistration19.cxx) -target_link_libraries(ImageRegistration19 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration19 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(ImageRegistration20 ImageRegistration20.cxx) -target_link_libraries(ImageRegistration20 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration20 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(DeformableRegistration6 DeformableRegistration6.cxx) -target_link_libraries(DeformableRegistration6 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration6 + PRIVATE + ITK::ITKImageIO + ITK::ITKDisplacementFieldModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationCommonModule + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(DeformableRegistration7 DeformableRegistration7.cxx) -target_link_libraries(DeformableRegistration7 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration7 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKDisplacementFieldModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(DeformableRegistration8 DeformableRegistration8.cxx) -target_link_libraries(DeformableRegistration8 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration8 + PRIVATE + ITK::ITKImageIO + ITK::ITKTransformIO + ITK::ITKCommonModule + ITK::ITKDisplacementFieldModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) if(ITK_USE_FFTWD AND NOT ITK_USE_CUFFTW) add_executable(DeformableRegistration9 DeformableRegistration9.cxx) @@ -72,19 +324,78 @@ if(ITK_USE_FFTWD AND NOT ITK_USE_CUFFTW) endif() add_executable(MultiResImageRegistration1 MultiResImageRegistration1.cxx) -target_link_libraries(MultiResImageRegistration1 ${ITK_LIBRARIES}) +target_link_libraries( + MultiResImageRegistration1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(MultiResImageRegistration2 MultiResImageRegistration2.cxx) -target_link_libraries(MultiResImageRegistration2 ${ITK_LIBRARIES}) +target_link_libraries( + MultiResImageRegistration2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(MultiResImageRegistration3 MultiResImageRegistration3.cxx) -target_link_libraries(MultiResImageRegistration3 ${ITK_LIBRARIES}) +target_link_libraries( + MultiResImageRegistration3 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(MultiStageImageRegistration1 MultiStageImageRegistration1.cxx) -target_link_libraries(MultiStageImageRegistration1 ${ITK_LIBRARIES}) +target_link_libraries( + MultiStageImageRegistration1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(MultiStageImageRegistration2 MultiStageImageRegistration2.cxx) -target_link_libraries(MultiStageImageRegistration2 ${ITK_LIBRARIES}) +target_link_libraries( + MultiStageImageRegistration2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageStatisticsModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) if(ITKFEMRegistration_ENABLED) add_executable(DeformableRegistration1 DeformableRegistration1.cxx) @@ -95,85 +406,326 @@ if(ITKFEMRegistration_ENABLED) endif() add_executable(DeformableRegistration2 DeformableRegistration2.cxx) -target_link_libraries(DeformableRegistration2 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKDisplacementFieldModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKPDEDeformableRegistrationModule +) add_executable(DeformableRegistration3 DeformableRegistration3.cxx) -target_link_libraries(DeformableRegistration3 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration3 + PRIVATE + ITK::ITKImageIO + ITK::ITKDisplacementFieldModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKPDEDeformableRegistrationModule +) add_executable(DeformableRegistration5 DeformableRegistration5.cxx) -target_link_libraries(DeformableRegistration5 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration5 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKDisplacementFieldModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKPDEDeformableRegistrationModule +) add_executable(DeformableRegistration12 DeformableRegistration12.cxx) -target_link_libraries(DeformableRegistration12 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration12 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(DeformableRegistration13 DeformableRegistration13.cxx) -target_link_libraries(DeformableRegistration13 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration13 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(DeformableRegistration14 DeformableRegistration14.cxx) -target_link_libraries(DeformableRegistration14 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration14 + PRIVATE + ITK::ITKImageIO + ITK::ITKTransformIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(ChangeInformationImageFilter ChangeInformationImageFilter.cxx) -target_link_libraries(ChangeInformationImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + ChangeInformationImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageGridModule +) add_executable(DeformableRegistration15 DeformableRegistration15.cxx) -target_link_libraries(DeformableRegistration15 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration15 + PRIVATE + ITK::ITKImageIO + ITK::ITKTransformIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(DeformableRegistration16 DeformableRegistration16.cxx) -target_link_libraries(DeformableRegistration16 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration16 + PRIVATE + ITK::ITKImageIO + ITK::ITKDisplacementFieldModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKPDEDeformableRegistrationModule + ITK::ITKRegistrationCommonModule +) add_executable(DeformableRegistration17 DeformableRegistration17.cxx) -target_link_libraries(DeformableRegistration17 ${ITK_LIBRARIES}) +target_link_libraries( + DeformableRegistration17 + PRIVATE + ITK::ITKImageIO + ITK::ITKDisplacementFieldModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKPDEDeformableRegistrationModule + ITK::ITKRegistrationCommonModule +) add_executable( DisplacementFieldInitialization DisplacementFieldInitialization.cxx ) -target_link_libraries(DisplacementFieldInitialization ${ITK_LIBRARIES}) +target_link_libraries( + DisplacementFieldInitialization + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKDisplacementFieldModule +) add_executable(LandmarkWarping2 LandmarkWarping2.cxx) -target_link_libraries(LandmarkWarping2 ${ITK_LIBRARIES}) +target_link_libraries( + LandmarkWarping2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKDisplacementFieldModule + ITK::ITKImageGridModule +) add_executable(BSplineWarping1 BSplineWarping1.cxx) -target_link_libraries(BSplineWarping1 ${ITK_LIBRARIES}) +target_link_libraries( + BSplineWarping1 + PRIVATE + ITK::ITKImageIO + ITK::ITKTransformIO + ITK::ITKCommonModule + ITK::ITKImageGridModule + ITK::ITKTransformModule +) add_executable(BSplineWarping2 BSplineWarping2.cxx) -target_link_libraries(BSplineWarping2 ${ITK_LIBRARIES}) +target_link_libraries( + BSplineWarping2 + PRIVATE + ITK::ITKImageIO + ITK::ITKTransformIO + ITK::ITKCommonModule + ITK::ITKImageGridModule + ITK::ITKTransformModule +) add_executable(ThinPlateSplineWarp ThinPlateSplineWarp.cxx) -target_link_libraries(ThinPlateSplineWarp ${ITK_LIBRARIES}) +target_link_libraries( + ThinPlateSplineWarp + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageGridModule + ITK::ITKTransformModule +) add_executable(ModelToImageRegistration1 ModelToImageRegistration1.cxx) -target_link_libraries(ModelToImageRegistration1 ${ITK_LIBRARIES}) +target_link_libraries( + ModelToImageRegistration1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageFunctionModule + ITK::ITKImageIntensityModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKSmoothingModule + ITK::ITKSpatialObjectsModule + ITK::ITKStatisticsModule + ITK::ITKTransformModule +) add_executable(ModelToImageRegistration2 ModelToImageRegistration2.cxx) -target_link_libraries(ModelToImageRegistration2 ${ITK_LIBRARIES}) +target_link_libraries( + ModelToImageRegistration2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFunctionModule + ITK::ITKImageGridModule + ITK::ITKLevelSetsModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKSpatialObjectsModule + ITK::ITKTransformModule +) add_executable(ImageRegistration1 ImageRegistration1.cxx) -target_link_libraries(ImageRegistration1 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration1 + PRIVATE + ITK::ITKImageIO + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKMetricsv4Module + ITK::ITKOptimizersv4Module + ITK::ITKRegistrationMethodsv4Module + ITK::ITKTransformModule +) add_executable(ImageRegistration2 ImageRegistration2.cxx) -target_link_libraries(ImageRegistration2 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageCompareModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKSmoothingModule + ITK::ITKTransformModule +) add_executable(ImageRegistration17 ImageRegistration17.cxx) -target_link_libraries(ImageRegistration17 ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistration17 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable( ImageRegistrationHistogramPlotter ImageRegistrationHistogramPlotter.cxx ) -target_link_libraries(ImageRegistrationHistogramPlotter ${ITK_LIBRARIES}) +target_link_libraries( + ImageRegistrationHistogramPlotter + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKSmoothingModule + ITK::ITKStatisticsModule + ITK::ITKTransformModule +) add_executable(MeanSquaresImageMetric1 MeanSquaresImageMetric1.cxx) -target_link_libraries(MeanSquaresImageMetric1 ${ITK_LIBRARIES}) +target_link_libraries( + MeanSquaresImageMetric1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFunctionModule + ITK::ITKMetricsv4Module + ITK::ITKTransformModule +) add_executable(IterativeClosestPoint1 IterativeClosestPoint1.cxx) -target_link_libraries(IterativeClosestPoint1 ${ITK_LIBRARIES}) +target_link_libraries( + IterativeClosestPoint1 + PRIVATE + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(IterativeClosestPoint2 IterativeClosestPoint2.cxx) -target_link_libraries(IterativeClosestPoint2 ${ITK_LIBRARIES}) +target_link_libraries( + IterativeClosestPoint2 + PRIVATE + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) add_executable(IterativeClosestPoint3 IterativeClosestPoint3.cxx) -target_link_libraries(IterativeClosestPoint3 ${ITK_LIBRARIES}) +target_link_libraries( + IterativeClosestPoint3 + PRIVATE + ITK::ITKCommonModule + ITK::ITKDistanceMapModule + ITK::ITKOptimizersModule + ITK::ITKRegistrationCommonModule + ITK::ITKTransformModule +) if(BUILD_TESTING) add_subdirectory(test) diff --git a/Examples/Segmentation/CMakeLists.txt b/Examples/Segmentation/CMakeLists.txt index 091ad38b37b..86f6d098508 100644 --- a/Examples/Segmentation/CMakeLists.txt +++ b/Examples/Segmentation/CMakeLists.txt @@ -1,25 +1,72 @@ project(ImageSegmentation) add_executable(ConfidenceConnected ConfidenceConnected.cxx) -target_link_libraries(ConfidenceConnected ${ITK_LIBRARIES}) +target_link_libraries( + ConfidenceConnected + PRIVATE + ITK::ITKImageIO + ITK::ITKCurvatureFlowModule + ITK::ITKImageFilterBaseModule + ITK::ITKRegionGrowingModule +) add_executable(ConfidenceConnected3D ConfidenceConnected3D.cxx) -target_link_libraries(ConfidenceConnected3D ${ITK_LIBRARIES}) +target_link_libraries( + ConfidenceConnected3D + PRIVATE + ITK::ITKImageIO + ITK::ITKCurvatureFlowModule + ITK::ITKImageFilterBaseModule + ITK::ITKRegionGrowingModule +) add_executable( NeighborhoodConnectedImageFilter NeighborhoodConnectedImageFilter.cxx ) -target_link_libraries(NeighborhoodConnectedImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + NeighborhoodConnectedImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKCurvatureFlowModule + ITK::ITKImageFilterBaseModule + ITK::ITKRegionGrowingModule +) add_executable(IsolatedConnectedImageFilter IsolatedConnectedImageFilter.cxx) -target_link_libraries(IsolatedConnectedImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + IsolatedConnectedImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKCurvatureFlowModule + ITK::ITKImageFilterBaseModule + ITK::ITKRegionGrowingModule +) add_executable(ConnectedThresholdImageFilter ConnectedThresholdImageFilter.cxx) -target_link_libraries(ConnectedThresholdImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + ConnectedThresholdImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKCurvatureFlowModule + ITK::ITKImageFilterBaseModule + ITK::ITKRegionGrowingModule +) add_executable(FastMarchingImageFilter FastMarchingImageFilter.cxx) -target_link_libraries(FastMarchingImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + FastMarchingImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKAnisotropicSmoothingModule + ITK::ITKFastMarchingModule + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule + ITK::ITKThresholdingModule +) add_executable( GeodesicActiveContourShapePriorLevelSetImageFilter @@ -27,65 +74,191 @@ add_executable( ) target_link_libraries( GeodesicActiveContourShapePriorLevelSetImageFilter - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKImageIO + ITK::ITKAnisotropicSmoothingModule + ITK::ITKCommonModule + ITK::ITKFastMarchingModule + ITK::ITKImageGradientModule + ITK::ITKImageGridModule + ITK::ITKImageIntensityModule + ITK::ITKLevelSetsModule + ITK::ITKSpatialFunctionModule + ITK::ITKSpatialObjectsModule + ITK::ITKThresholdingModule ) add_executable(GibbsPriorImageFilter1 GibbsPriorImageFilter1.cxx) -target_link_libraries(GibbsPriorImageFilter1 ${ITK_LIBRARIES}) +target_link_libraries( + GibbsPriorImageFilter1 + PRIVATE + ITK::ITKImageIO + ITK::ITKClassifiersModule + ITK::ITKCommonModule + ITK::ITKMarkovRandomFieldsClassifiersModule + ITK::ITKStatisticsModule +) add_executable( HoughTransform2DCirclesImageFilter HoughTransform2DCirclesImageFilter.cxx ) -target_link_libraries(HoughTransform2DCirclesImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + HoughTransform2DCirclesImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFeatureModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGradientModule + ITK::ITKSmoothingModule + ITK::ITKThresholdingModule +) add_executable( HoughTransform2DLinesImageFilter HoughTransform2DLinesImageFilter.cxx ) -target_link_libraries(HoughTransform2DLinesImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + HoughTransform2DLinesImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFeatureModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageGradientModule + ITK::ITKSmoothingModule + ITK::ITKThresholdingModule +) add_executable(VectorConfidenceConnected VectorConfidenceConnected.cxx) -target_link_libraries(VectorConfidenceConnected ${ITK_LIBRARIES}) +target_link_libraries( + VectorConfidenceConnected + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKRegionGrowingModule +) add_executable(RelabelComponentImageFilter RelabelComponentImageFilter.cxx) -target_link_libraries(RelabelComponentImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + RelabelComponentImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKConnectedComponentsModule +) add_executable( CannySegmentationLevelSetImageFilter CannySegmentationLevelSetImageFilter.cxx ) -target_link_libraries(CannySegmentationLevelSetImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + CannySegmentationLevelSetImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKAnisotropicSmoothingModule + ITK::ITKCommonModule + ITK::ITKFastMarchingModule + ITK::ITKImageFeatureModule + ITK::ITKLevelSetsModule + ITK::ITKThresholdingModule +) add_executable( GeodesicActiveContourImageFilter GeodesicActiveContourImageFilter.cxx ) -target_link_libraries(GeodesicActiveContourImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + GeodesicActiveContourImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKAnisotropicSmoothingModule + ITK::ITKFastMarchingModule + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule + ITK::ITKLevelSetsModule + ITK::ITKThresholdingModule +) add_executable(ShapeDetectionLevelSetFilter ShapeDetectionLevelSetFilter.cxx) -target_link_libraries(ShapeDetectionLevelSetFilter ${ITK_LIBRARIES}) +target_link_libraries( + ShapeDetectionLevelSetFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKAnisotropicSmoothingModule + ITK::ITKFastMarchingModule + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule + ITK::ITKLevelSetsModule + ITK::ITKThresholdingModule +) add_executable(CurvesLevelSetImageFilter CurvesLevelSetImageFilter.cxx) -target_link_libraries(CurvesLevelSetImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + CurvesLevelSetImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKAnisotropicSmoothingModule + ITK::ITKFastMarchingModule + ITK::ITKImageGradientModule + ITK::ITKImageIntensityModule + ITK::ITKLevelSetsModule + ITK::ITKThresholdingModule +) add_executable(WatershedSegmentation1 WatershedSegmentation1.cxx) -target_link_libraries(WatershedSegmentation1 ${ITK_LIBRARIES}) +target_link_libraries( + WatershedSegmentation1 + PRIVATE + ITK::ITKImageIO + ITK::ITKAnisotropicSmoothingModule + ITK::ITKImageFilterBaseModule + ITK::ITKImageFusionModule + ITK::ITKImageGradientModule + ITK::ITKWatershedsModule +) add_executable(WatershedSegmentation2 WatershedSegmentation2.cxx) -target_link_libraries(WatershedSegmentation2 ${ITK_LIBRARIES}) +target_link_libraries( + WatershedSegmentation2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageFusionModule + ITK::ITKImageGradientModule + ITK::ITKWatershedsModule +) add_executable( LaplacianSegmentationLevelSetImageFilter LaplacianSegmentationLevelSetImageFilter.cxx ) -target_link_libraries(LaplacianSegmentationLevelSetImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + LaplacianSegmentationLevelSetImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKAnisotropicSmoothingModule + ITK::ITKCommonModule + ITK::ITKFastMarchingModule + ITK::ITKImageFeatureModule + ITK::ITKLevelSetsModule + ITK::ITKThresholdingModule +) add_executable( ThresholdSegmentationLevelSetImageFilter ThresholdSegmentationLevelSetImageFilter.cxx ) -target_link_libraries(ThresholdSegmentationLevelSetImageFilter ${ITK_LIBRARIES}) +target_link_libraries( + ThresholdSegmentationLevelSetImageFilter + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKFastMarchingModule + ITK::ITKImageFeatureModule + ITK::ITKLevelSetsModule + ITK::ITKThresholdingModule +) if(BUILD_TESTING) add_subdirectory(test) diff --git a/Examples/SpatialObjects/CMakeLists.txt b/Examples/SpatialObjects/CMakeLists.txt index d319eb6aa27..5ee6e2094dd 100644 --- a/Examples/SpatialObjects/CMakeLists.txt +++ b/Examples/SpatialObjects/CMakeLists.txt @@ -1,67 +1,124 @@ project(SpatialObjectsExamples) add_executable(ArrowSpatialObject ArrowSpatialObject.cxx) -target_link_libraries(ArrowSpatialObject ${ITK_LIBRARIES}) +target_link_libraries(ArrowSpatialObject PRIVATE ITK::ITKSpatialObjectsModule) add_executable(BlobSpatialObject BlobSpatialObject.cxx) -target_link_libraries(BlobSpatialObject ${ITK_LIBRARIES}) +target_link_libraries(BlobSpatialObject PRIVATE ITK::ITKSpatialObjectsModule) add_executable(EllipseSpatialObject EllipseSpatialObject.cxx) -target_link_libraries(EllipseSpatialObject ${ITK_LIBRARIES}) +target_link_libraries(EllipseSpatialObject PRIVATE ITK::ITKSpatialObjectsModule) add_executable(GaussianSpatialObject GaussianSpatialObject.cxx) -target_link_libraries(GaussianSpatialObject ${ITK_LIBRARIES}) +target_link_libraries( + GaussianSpatialObject + PRIVATE + ITK::ITKSpatialObjectsModule +) add_executable(GroupSpatialObject GroupSpatialObject.cxx) -target_link_libraries(GroupSpatialObject ${ITK_LIBRARIES}) +target_link_libraries(GroupSpatialObject PRIVATE ITK::ITKSpatialObjectsModule) add_executable(ImageSpatialObject ImageSpatialObject.cxx) -target_link_libraries(ImageSpatialObject ${ITK_LIBRARIES}) +target_link_libraries( + ImageSpatialObject + PRIVATE + ITK::ITKCommonModule + ITK::ITKSpatialObjectsModule +) add_executable(ImageMaskSpatialObject ImageMaskSpatialObject.cxx) -target_link_libraries(ImageMaskSpatialObject ${ITK_LIBRARIES}) +target_link_libraries( + ImageMaskSpatialObject + PRIVATE + ITK::ITKCommonModule + ITK::ITKSpatialObjectsModule + ITK::ITKTransformModule +) add_executable(LandmarkSpatialObject LandmarkSpatialObject.cxx) -target_link_libraries(LandmarkSpatialObject ${ITK_LIBRARIES}) +target_link_libraries( + LandmarkSpatialObject + PRIVATE + ITK::ITKSpatialObjectsModule +) add_executable(LineSpatialObject LineSpatialObject.cxx) -target_link_libraries(LineSpatialObject ${ITK_LIBRARIES}) +target_link_libraries(LineSpatialObject PRIVATE ITK::ITKSpatialObjectsModule) add_executable(MeshSpatialObject MeshSpatialObject.cxx) -target_link_libraries(MeshSpatialObject ${ITK_LIBRARIES}) +target_link_libraries( + MeshSpatialObject + PRIVATE + ITK::ITKCommonModule + ITK::ITKIOSpatialObjectsModule + ITK::ITKSpatialObjectsModule + ITK::ITKMeshModule +) add_executable(ReadWriteSpatialObject ReadWriteSpatialObject.cxx) -target_link_libraries(ReadWriteSpatialObject ${ITK_LIBRARIES}) +target_link_libraries( + ReadWriteSpatialObject + PRIVATE + ITK::ITKCommonModule + ITK::ITKIOSpatialObjectsModule + ITK::ITKSpatialObjectsModule + ITK::ITKMeshModule +) add_executable(SceneSpatialObject SceneSpatialObject.cxx) -target_link_libraries(SceneSpatialObject ${ITK_LIBRARIES}) +target_link_libraries(SceneSpatialObject PRIVATE ITK::ITKSpatialObjectsModule) add_executable(SpatialObjectHierarchy SpatialObjectHierarchy.cxx) -target_link_libraries(SpatialObjectHierarchy ${ITK_LIBRARIES}) +target_link_libraries( + SpatialObjectHierarchy + PRIVATE + ITK::ITKSpatialObjectsModule +) add_executable(SpatialObjectTransforms SpatialObjectTransforms.cxx) -target_link_libraries(SpatialObjectTransforms ${ITK_LIBRARIES}) +target_link_libraries( + SpatialObjectTransforms + PRIVATE + ITK::ITKSpatialObjectsModule +) add_executable( SpatialObjectToImageStatisticsCalculator SpatialObjectToImageStatisticsCalculator.cxx ) -target_link_libraries(SpatialObjectToImageStatisticsCalculator ${ITK_LIBRARIES}) +target_link_libraries( + SpatialObjectToImageStatisticsCalculator + PRIVATE + ITK::ITKCommonModule + ITK::ITKSpatialObjectsModule + ITK::ITKTestKernelModule +) add_executable(SurfaceSpatialObject SurfaceSpatialObject.cxx) -target_link_libraries(SurfaceSpatialObject ${ITK_LIBRARIES}) +target_link_libraries(SurfaceSpatialObject PRIVATE ITK::ITKSpatialObjectsModule) add_executable(TubeSpatialObject TubeSpatialObject.cxx) -target_link_libraries(TubeSpatialObject ${ITK_LIBRARIES}) +target_link_libraries(TubeSpatialObject PRIVATE ITK::ITKSpatialObjectsModule) add_executable(VesselTubeSpatialObject VesselTubeSpatialObject.cxx) -target_link_libraries(VesselTubeSpatialObject ${ITK_LIBRARIES}) +target_link_libraries( + VesselTubeSpatialObject + PRIVATE + ITK::ITKSpatialObjectsModule +) add_executable(DTITubeSpatialObject DTITubeSpatialObject.cxx) -target_link_libraries(DTITubeSpatialObject ${ITK_LIBRARIES}) +target_link_libraries(DTITubeSpatialObject PRIVATE ITK::ITKSpatialObjectsModule) add_executable( BoundingBoxFromImageMaskSpatialObject BoundingBoxFromImageMaskSpatialObject.cxx ) -target_link_libraries(BoundingBoxFromImageMaskSpatialObject ${ITK_LIBRARIES}) +target_link_libraries( + BoundingBoxFromImageMaskSpatialObject + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKSpatialObjectsModule +) diff --git a/Examples/Statistics/CMakeLists.txt b/Examples/Statistics/CMakeLists.txt index 03d7f703118..9cb7dc86b58 100644 --- a/Examples/Statistics/CMakeLists.txt +++ b/Examples/Statistics/CMakeLists.txt @@ -1,16 +1,38 @@ project(StatisticsExamples) add_executable(BayesianPluginClassifier BayesianPluginClassifier.cxx) -target_link_libraries(BayesianPluginClassifier ${ITK_LIBRARIES}) +target_link_libraries( + BayesianPluginClassifier + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(BayesianClassifierInitializer BayesianClassifierInitializer.cxx) -target_link_libraries(BayesianClassifierInitializer ${ITK_LIBRARIES}) +target_link_libraries( + BayesianClassifierInitializer + PRIVATE + ITK::ITKImageIO + ITK::ITKClassifiersModule + ITK::ITKCommonModule +) add_executable(BayesianClassifier BayesianClassifier.cxx) -target_link_libraries(BayesianClassifier ${ITK_LIBRARIES}) +target_link_libraries( + BayesianClassifier + PRIVATE + ITK::ITKImageIO + ITK::ITKAnisotropicSmoothingModule + ITK::ITKClassifiersModule +) add_executable(EuclideanDistanceMetric EuclideanDistanceMetric.cxx) -target_link_libraries(EuclideanDistanceMetric ${ITK_LIBRARIES}) +target_link_libraries( + EuclideanDistanceMetric + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable( ExpectationMaximizationMixtureModelEstimator @@ -18,38 +40,70 @@ add_executable( ) target_link_libraries( ExpectationMaximizationMixtureModelEstimator - ${ITK_LIBRARIES} + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule ) add_executable(GaussianMembershipFunction GaussianMembershipFunction.cxx) -target_link_libraries(GaussianMembershipFunction ${ITK_LIBRARIES}) +target_link_libraries( + GaussianMembershipFunction + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(Histogram Histogram.cxx) -target_link_libraries(Histogram ${ITK_LIBRARIES}) +target_link_libraries(Histogram PRIVATE ITK::ITKStatisticsModule) add_executable(KdTree KdTree.cxx) -target_link_libraries(KdTree ${ITK_LIBRARIES}) +target_link_libraries( + KdTree + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(KdTreeBasedKMeansClustering KdTreeBasedKMeansClustering.cxx) -target_link_libraries(KdTreeBasedKMeansClustering ${ITK_LIBRARIES}) +target_link_libraries( + KdTreeBasedKMeansClustering + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(ListSample ListSample.cxx) -target_link_libraries(ListSample ${ITK_LIBRARIES}) +target_link_libraries( + ListSample + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(SampleToHistogramFilter SampleToHistogramFilter.cxx) -target_link_libraries(SampleToHistogramFilter ${ITK_LIBRARIES}) +target_link_libraries( + SampleToHistogramFilter + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(MaximumDecisionRule MaximumDecisionRule.cxx) -target_link_libraries(MaximumDecisionRule ${ITK_LIBRARIES}) +target_link_libraries(MaximumDecisionRule PRIVATE ITK::ITKStatisticsModule) add_executable(MaximumRatioDecisionRule MaximumRatioDecisionRule.cxx) -target_link_libraries(MaximumRatioDecisionRule ${ITK_LIBRARIES}) +target_link_libraries(MaximumRatioDecisionRule PRIVATE ITK::ITKStatisticsModule) add_executable(MembershipSample MembershipSample.cxx) -target_link_libraries(MembershipSample ${ITK_LIBRARIES}) +target_link_libraries( + MembershipSample + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(MinimumDecisionRule MinimumDecisionRule.cxx) -target_link_libraries(MinimumDecisionRule ${ITK_LIBRARIES}) +target_link_libraries(MinimumDecisionRule PRIVATE ITK::ITKStatisticsModule) # # At the moment, itkNeighborhoodSampler is incomplete, so this example # can't be updated @@ -58,52 +112,136 @@ target_link_libraries(MinimumDecisionRule ${ITK_LIBRARIES}) #target_link_libraries(NeighborhoodSampler ${ITK_LIBRARIES}) add_executable(NormalVariateGenerator NormalVariateGenerator.cxx) -target_link_libraries(NormalVariateGenerator ${ITK_LIBRARIES}) +target_link_libraries(NormalVariateGenerator PRIVATE ITK::ITKStatisticsModule) add_executable(PointSetToListSampleAdaptor PointSetToListSampleAdaptor.cxx) -target_link_libraries(PointSetToListSampleAdaptor ${ITK_LIBRARIES}) +target_link_libraries( + PointSetToListSampleAdaptor + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(SampleStatistics SampleStatistics.cxx) -target_link_libraries(SampleStatistics ${ITK_LIBRARIES}) +target_link_libraries( + SampleStatistics + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(SampleSorting SampleSorting.cxx) -target_link_libraries(SampleSorting ${ITK_LIBRARIES}) +target_link_libraries( + SampleSorting + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(WeightedSampleStatistics WeightedSampleStatistics.cxx) -target_link_libraries(WeightedSampleStatistics ${ITK_LIBRARIES}) +target_link_libraries( + WeightedSampleStatistics + PRIVATE + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(ImageHistogram3 ImageHistogram3.cxx) -target_link_libraries(ImageHistogram3 ${ITK_LIBRARIES}) +target_link_libraries( + ImageHistogram3 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(ScalarImageMarkovRandomField1 ScalarImageMarkovRandomField1.cxx) -target_link_libraries(ScalarImageMarkovRandomField1 ${ITK_LIBRARIES}) +target_link_libraries( + ScalarImageMarkovRandomField1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKImageIntensityModule + ITK::ITKImageComposeModule + ITK::ITKMarkovRandomFieldsClassifiersModule +) add_executable(ScalarImageKmeansClassifier ScalarImageKmeansClassifier.cxx) -target_link_libraries(ScalarImageKmeansClassifier ${ITK_LIBRARIES}) +target_link_libraries( + ScalarImageKmeansClassifier + PRIVATE + ITK::ITKImageIO + ITK::ITKClassifiersModule + ITK::ITKCommonModule +) add_executable(ImageToListSampleAdaptor ImageToListSampleAdaptor.cxx) -target_link_libraries(ImageToListSampleAdaptor ${ITK_LIBRARIES}) +target_link_libraries( + ImageToListSampleAdaptor + PRIVATE + ITK::ITKCommonModule + ITK::ITKImageComposeModule + ITK::ITKStatisticsModule + ITK::ITKTestKernelModule +) add_executable(ImageHistogram1 ImageHistogram1.cxx) -target_link_libraries(ImageHistogram1 ${ITK_LIBRARIES}) +target_link_libraries( + ImageHistogram1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(ImageHistogram2 ImageHistogram2.cxx) -target_link_libraries(ImageHistogram2 ${ITK_LIBRARIES}) +target_link_libraries( + ImageHistogram2 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(ImageHistogram4 ImageHistogram4.cxx) -target_link_libraries(ImageHistogram4 ${ITK_LIBRARIES}) +target_link_libraries( + ImageHistogram4 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(ImageEntropy1 ImageEntropy1.cxx) -target_link_libraries(ImageEntropy1 ${ITK_LIBRARIES}) +target_link_libraries( + ImageEntropy1 + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) add_executable(ImageMutualInformation1 ImageMutualInformation1.cxx) -target_link_libraries(ImageMutualInformation1 ${ITK_LIBRARIES}) +target_link_libraries( + ImageMutualInformation1 + PRIVATE + ITK::ITKImageIO + ITK::ITKStatisticsModule + ITK::ITKCommonModule + ITK::ITKImageComposeModule +) add_executable( ScalarImageKmeansModelEstimator ScalarImageKmeansModelEstimator.cxx ) -target_link_libraries(ScalarImageKmeansModelEstimator ${ITK_LIBRARIES}) +target_link_libraries( + ScalarImageKmeansModelEstimator + PRIVATE + ITK::ITKImageIO + ITK::ITKCommonModule + ITK::ITKStatisticsModule +) if(BUILD_TESTING) add_subdirectory(test) diff --git a/Modules/ThirdParty/HDF5/CMakeLists.txt b/Modules/ThirdParty/HDF5/CMakeLists.txt index ba0334fa9d9..5046811ca3d 100644 --- a/Modules/ThirdParty/HDF5/CMakeLists.txt +++ b/Modules/ThirdParty/HDF5/CMakeLists.txt @@ -80,6 +80,7 @@ endif() configure_file(src/itk_hdf5.h.in src/itk_hdf5.h) configure_file(src/itk_H5Cpp.h.in src/itk_H5Cpp.h) list(APPEND ITK_LIBRARY_PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS FALSE) +include_directories(${ITKHDF5_INCLUDE_DIRS}) itk_module_impl() install(FILES ${ITKHDF5_BINARY_DIR}/src/itk_hdf5.h diff --git a/Modules/ThirdParty/MetaIO/src/CMakeLists.txt b/Modules/ThirdParty/MetaIO/src/CMakeLists.txt index 2e58e5bb061..2a9dc7359be 100644 --- a/Modules/ThirdParty/MetaIO/src/CMakeLists.txt +++ b/Modules/ThirdParty/MetaIO/src/CMakeLists.txt @@ -14,5 +14,6 @@ set(METAIO_INSTALL_ARCHIVE_DIR ${ITKMetaIO_INSTALL_ARCHIVE_DIR}) set(METAIO_INSTALL_NO_LIBRARIES FALSE) set(METAIO_INSTALL_NO_DEVELOPMENT FALSE) set(METAIO_LIBRARY_PROPERTIES ${ITK_LIBRARY_PROPERTIES}) +include_directories(${ITKMetaIO_INCLUDE_DIRS}) add_subdirectory(MetaIO/src) itk_module_target(ITKMetaIO NO_INSTALL) diff --git a/Utilities/Maintenance/WhatModulesITK.py b/Utilities/Maintenance/WhatModulesITK.py index ebc92bc4a06..f75b47c91c8 100755 --- a/Utilities/Maintenance/WhatModulesITK.py +++ b/Utilities/Maintenance/WhatModulesITK.py @@ -3,25 +3,23 @@ import os, sys import re +import argparse program = sys.argv[0] -if len(sys.argv) < 3: - print( - """ -Usage: WhatModulesITK.py itkSourceTree applicationFiles... - Generate a FindPackage(ITK COMPONENTS) that lists all modules referenced by a set of files - - For example: - Running from the ITK source, - ./Utilities/Maintenance/WhatModulesITK.py . Modules/Filtering/Smoothing/test/itkDiscreteGaussianImageFilterTest.cxx - Produces - Find_Package(ITK COMPONENTS - ITKImageFilterBase - ITKSmoothing - ITKTestKernel - ) - To select many files from an application, - ./Utilities/Maintenance/WhatModulesITK.py . $(find /path/to/itk/project/ -type f) + +# Parse command line arguments +parser = argparse.ArgumentParser( + description="Generate CMake find_package or target_link_libraries commands for ITK modules", + epilog=""" +Examples: + Running from the ITK source: + ./Utilities/Maintenance/WhatModulesITK.py . Modules/Filtering/Smoothing/test/itkDiscreteGaussianImageFilterTest.cxx + + With --link option: + ./Utilities/Maintenance/WhatModulesITK.py --link . Examples/Filtering/AntiAliasBinaryImageFilter.cxx + + To select many files from an application: + ./Utilities/Maintenance/WhatModulesITK.py . $(find /path/to/itk/project/ -type f) NOTE: The modules list is created by looking at the itk include files used by the application files. Some programs do not include @@ -35,9 +33,23 @@ unless their include file is present in the application code. If ITKIOImageBase is present, a cmake variable ITK_IO_MODULES_USED is created and added to the module list. -""" - ) - exit(0) +""", + formatter_class=argparse.RawDescriptionHelpFormatter, +) +parser.add_argument( + "--link", + action="store_true", + help="Output target_link_libraries command with Module suffix instead of find_package", +) +parser.add_argument("itkSourceTree", help="Path to ITK source tree") +parser.add_argument( + "applicationFiles", nargs="+", help="Application source files to analyze" +) + +args = parser.parse_args() +itk_source_tree = args.itkSourceTree +application_files = args.applicationFiles +use_link_command = args.link # Build a dict that maps include files to paths @@ -58,7 +70,7 @@ def IncludesToPaths(path): def FindModules(path): pathToModule = dict() fileProg = re.compile(r"itk-module.cmake") - moduleProg = re.compile(".*itk_module[^(]*\\(([^ \n]*)", re.S) + moduleProg = re.compile(r".*itk_module[^(]*\(\s*([^\s)]+)", re.S) for root, dirs, files in os.walk(path): for f in files: if fileProg.match(f): @@ -90,15 +102,15 @@ def FindIncludes(path): # Start the program # Generate dict's for mapping includes to modules -includesToPaths = IncludesToPaths(os.path.join(sys.argv[1], "Modules")) -pathsToModules = FindModules(os.path.join(sys.argv[1], "Modules")) +includesToPaths = IncludesToPaths(os.path.join(itk_source_tree, "Modules")) +pathsToModules = FindModules(os.path.join(itk_source_tree, "Modules")) # Test to see if ITK source is provided if len(pathsToModules) == 0: print( program + ": " - + sys.argv[1] + + itk_source_tree + " is not an ITK source directory. It does not contain any itk-module.cmake files." ) exit(1) @@ -106,9 +118,7 @@ def FindIncludes(path): # Build a set of includes for all command line files allIncludes = set() -sys.argv.pop(0) -sys.argv.pop(0) -for f in sys.argv: +for f in application_files: if os.path.isfile(f): allIncludes.update(FindIncludes(f)) else: @@ -121,21 +131,41 @@ def FindIncludes(path): module = includesToPaths[inc] allModules.add(pathsToModules[includesToPaths[inc]]) -# Print a useful cmake command -print("find_package(ITK COMPONENTS") -for module in sorted(allModules): - print(" " + module) -if "ITKIOImageBase" in allModules: - print(r" ITKImageIO") -if "ITKIOMeshBase" in allModules: - print(r" ITKMeshIO") -if "ITKIOTransformBase" in allModules: - print(r" ITKTransformIO") -print(")") +# Map IO base modules to their corresponding Meta factory modules +io_module_map = [ + ("ITKIOImageBase", "ITKImageIO"), + ("ITKIOMeshBase", "ITKMeshIO"), + ("ITKIOTransformBase", "ITKTransformIO"), +] + +# Store original count before modifying allModules +original_module_count = len(allModules) + +# Print output based on --link option +if use_link_command: + # Output target_link_libraries with namespaced Module suffix + print("target_link_libraries(\n YourTarget\n PRIVATE") + + for base_module, io_module in io_module_map: + if base_module in allModules: + allModules.discard(base_module) + print(" " + io_module) + for module in sorted(allModules): + print(" " + module + "Module") + print(")") +else: + # Original find_package output + print("find_package(ITK COMPONENTS") + for module in sorted(allModules): + print(" " + module) + for base_module, io_module in io_module_map: + if base_module in allModules: + print(" " + io_module) + print(")") print( "Your application code includes " - + str(len(allModules)) + + str(original_module_count) + " of " + str(len(pathsToModules)) + " itk modules." diff --git a/Wrapping/macro_files/itk_end_wrap_module.cmake b/Wrapping/macro_files/itk_end_wrap_module.cmake index 42e49b9709a..ca595b834f2 100644 --- a/Wrapping/macro_files/itk_end_wrap_module.cmake +++ b/Wrapping/macro_files/itk_end_wrap_module.cmake @@ -392,7 +392,19 @@ PyModule_AddObject(m, \"_C_API\", cAPIObject); ${DO_NOT_WAIT_FOR_THREADS_CALLS} " ) - elseif("ITKCommon" IN_LIST WRAPPER_LIBRARY_LINK_LIBRARIES) + elseif( + "ITKCommon" + IN_LIST + WRAPPER_LIBRARY_LINK_LIBRARIES + OR + "${ITK_LIBRARY_NAMESPACE}::ITKCommon" + IN_LIST + WRAPPER_LIBRARY_LINK_LIBRARIES + OR + "${ITK_LIBRARY_NAMESPACE}::ITKCommonModule" + IN_LIST + WRAPPER_LIBRARY_LINK_LIBRARIES + ) set( ITK_WRAP_PYTHON_GLOBAL_TIMESTAMP_DECLS "