Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • VTK VTK
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 737
    • Issues 737
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 209
    • Merge requests 209
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • VTK
  • VTKVTK
  • Issues
  • #17977

Closed
Open
Created Aug 11, 2020 by Alexander Neumann@Neumann-A

[VTK 9.0.1] Missing call to find_package(pugixml) with external pugixml

Observed error:
/bin/ld: cannot find -lpugixml
After investigating:
VTK-vtk-module-find-packages.cmake is not doing the find_package(pugixml) call since _vtk_module_find_package_enabled is OFF for pugixml although VTK has been configured with VTK_MODULE_USE_EXTERNAL_VTK_pugixml=ON

Used CMakeLists.txt

cmake_minimum_required(VERSION 3.17)
include(CMakePrintHelpers)

project(vtk_test)
#find_package(VTK CONFIG REQUIRED)
set(VTK_SEARCH_MODULES	FiltersExtraction 
			FiltersSources 
			FiltersTexture 
			IOExport 
			IOGeometry 
			IOPLY 
			InteractionStyle 
			RenderingCore 
			RenderingLOD 
			RenderingOpenGL2
			pugixml)
find_package(VTK 9 NAMES vtk COMPONENTS ${VTK_SEARCH_MODULES} NO_MODULE REQUIRED)
cmake_print_variables(VTK_LIBRARIES VTK_INCLUDE_DIRS CMAKE_BUILD_TYPE)

add_executable(vtk_test main.cpp)
target_include_directories(vtk_test PRIVATE ${VTK_INCLUDE_DIRS})
target_link_libraries(vtk_test PRIVATE ${VTK_LIBRARIES})

From VTK-vtk-module-find-packages.cmake

unset(_vtk_module_find_package_fail_if_not_found)
unset(_vtk_module_find_package_enabled)
unset(_vtk_module_find_package_required)

set(_vtk_module_find_package_enabled OFF)
set(_vtk_module_find_package_is_required OFF)
set(_vtk_module_find_package_fail_if_not_found OFF)
if (_vtk_module_find_package_components)
  if ("pugixml_vtk_module_mangle" IN_LIST _vtk_module_find_package_components)
    set(_vtk_module_find_package_enabled ON)
    if ("pugixml_vtk_module_mangle" IN_LIST _vtk_module_find_package_components_required)
      set(_vtk_module_find_package_is_required "${${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED}")
      set(_vtk_module_find_package_fail_if_not_found ON)
    endif ()
  endif ()
else ()
  set(_vtk_module_find_package_enabled ON)
  set(_vtk_module_find_package_is_required "${${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED}")
  set(_vtk_module_find_package_fail_if_not_found ON)
endif ()
message(STATUS "${_vtk_module_find_package_enabled} blub")
if (_vtk_module_find_package_enabled)
  set(_vtk_module_find_package_required)
  if (_vtk_module_find_package_is_required)
    set(_vtk_module_find_package_required REQUIRED)
  endif ()
  message(STATUS "SEARCHING FOR PUGIXML")
  find_package(pugixml
    
    
    
    ${_vtk_module_find_package_quiet}
    ${_vtk_module_find_package_required}
    COMPONENTS          
    OPTIONAL_COMPONENTS )
  if (NOT pugixml_FOUND AND _vtk_module_find_package_fail_if_not_found)
    if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
      message(STATUS
        "Could not find the ${CMAKE_FIND_PACKAGE_NAME} package due to a "
        "missing dependency: pugixml")
    endif ()
    set("${CMAKE_FIND_PACKAGE_NAME}_pugixml_vtk_module_mangle_FOUND" 0)
    list(APPEND "${CMAKE_FIND_PACKAGE_NAME}_pugixml_vtk_module_mangle_NOT_FOUND_MESSAGE"
      "Failed to find the pugixml package.")
  endif ()
endif ()

The error is probably in

if ("pugixml_vtk_module_mangle" IN_LIST _vtk_module_find_package_components)

since the list contains pugixml without the extra mangling:

FiltersExtraction;FiltersSources;FiltersTexture;IOExport;IOGeometry;IOPLY;InteractionStyle;RenderingCore;RenderingLOD;RenderingOpenGL2;**pugixml**;CommonCore;CommonExecutionModel;FiltersGeneral;CommonDataModel;FiltersCore;FiltersStatistics;ParallelDIY;CommonComputationalGeometry;CommonTransforms;IOCore;IOImage;IOXML;RenderingContext2D;RenderingFreeType;RenderingVtkJS;CommonMath;FiltersGeometry;ImagingCore;jsoncpp;libharu;IOLegacy;CommonMisc;CommonSystem;FiltersHybrid;vtksys;zlib;CommonColor;FiltersModeling;RenderingUI;glew;opengl;kwiml;utf8;loguru;ImagingFourier;eigen;ParallelCore;diy2;doubleconversion;lz4;lzma;DICOMParser;jpeg;metaio;png;tiff;IOXMLParser;freetype;RenderingSceneGraph;ImagingSources;expat

Assignee
Assign to
Time tracking