diff --git a/Modules/Bridge/VtkGlue/itk-module-init.cmake b/Modules/Bridge/VtkGlue/itk-module-init.cmake index 550f1dce272..acd973ccefb 100644 --- a/Modules/Bridge/VtkGlue/itk-module-init.cmake +++ b/Modules/Bridge/VtkGlue/itk-module-init.cmake @@ -54,4 +54,31 @@ if(NOT VTK_RENDERING_BACKEND STREQUAL "None") ) endif() +if(ITK_WRAP_PYTHON) + if(NOT VTK_WRAP_PYTHON) + message( + FATAL_ERROR + "ITK_WRAP_PYTHON is ON and Module_ITKVtkGlue is enabled, but the VTK at\n" + " ${VTK_DIR}\n" + "was built with VTK_WRAP_PYTHON=OFF. Rebuild VTK with VTK_WRAP_PYTHON=ON,\n" + "or set Module_ITKVtkGlue=OFF." + ) + endif() + # VTK exports no shared/static variable, so ask an imported target directly. + if(TARGET VTK::CommonCore) + get_target_property(_vtk_common_core_type VTK::CommonCore TYPE) + if(_vtk_common_core_type STREQUAL "STATIC_LIBRARY") + message( + FATAL_ERROR + "ITK_WRAP_PYTHON is ON and Module_ITKVtkGlue is enabled, but the VTK at\n" + " ${VTK_DIR}\n" + "is a static build. Its Python wrapping collapses into a single\n" + "_vtkmodules_static module that ITK's wrapping cannot import. Rebuild VTK\n" + "with BUILD_SHARED_LIBS=ON, or set Module_ITKVtkGlue=OFF." + ) + endif() + unset(_vtk_common_core_type) + endif() +endif() + set(ITKVtkGlue_VTK_LIBRARIES ${_required_vtk_libraries}) diff --git a/Modules/Bridge/VtkGlue/test/CMakeLists.txt b/Modules/Bridge/VtkGlue/test/CMakeLists.txt index 8310ce7ff66..8856e2b5c15 100644 --- a/Modules/Bridge/VtkGlue/test/CMakeLists.txt +++ b/Modules/Bridge/VtkGlue/test/CMakeLists.txt @@ -110,3 +110,19 @@ if(NOT VTK_RENDERING_BACKEND STREQUAL "None") REQUIRES_DISPLAY ) endif() + +# Windows has no RPATH, so VTK's DLLs must be on PATH at test time. +if(WIN32 AND TARGET VTK::CommonCore) + get_property(_vtkglue_tests DIRECTORY PROPERTY TESTS) + if(_vtkglue_tests) + set_property( + TEST + ${_vtkglue_tests} + APPEND + PROPERTY + ENVIRONMENT_MODIFICATION + "PATH=path_list_prepend:$" + ) + endif() + unset(_vtkglue_tests) +endif()