CMake Paraview Config Fail for not found FiltersParallelDIY2 in my plugin project since 5.9

I build ParaView 5.9.1 from source and need to compile plugin project in my PC.
cmake configuration of plugin project give me the error message:

The following imported targets are referenced, but are missing:
VTK::FiltersParallelDIY2

Here is details:

My ParaView build installed to path:
D:/ParaView59,

here is dir tree structure and paraview-config.cmake:
image

and following is my top level CMakeLists.txt to find paraview in my plugin project:

42: set(ParaView_DIR "D:/ParaView59/lib/cmake/paraview-5.9")
43: find_package(ParaView REQUIRED)

CMake configure fail and give me this message:

CMake Error at CMakeLists.txt:43 (find_package):
Found package configuration file:

D:/ParaView59/lib/cmake/paraview-5.9/paraview-config.cmake

but it set ParaView_FOUND to FALSE so package “ParaView” is considered to
be NOT FOUND. Reason given by package:

The following imported targets are referenced, but are missing:
VTK::FiltersParallelDIY2

I have manully checked my install directory, all files relative to FiltersParallelDIY2 in my ParaView install dir and is path is here:
image

Additional infomations:
I built ParaView 5.9 offcial released source code with Visual Studio 15 2017 Win64, and plugin project config is same.
Python version is 3.7.5
I have used these project in both ParaView5.7 and ParaView5.8, and have never faced this issue.

So, maybe I missed some new cmake request in new version? or is there any clue to debug this?
Thanks!

Can you try with ninja instead of visual studio ?
Can you try with MPI disabled ?

1 Like

MPI is already disabled in my ParaView build.

The plugin project has tons of dependency libraries built with visual studio,
I am afread there are too many works to do compiling all these libs with ninja.

So why paraview config scripts cannot find existing FiltersParallelDIY2 lib in my ParaView_DIR? bug in Visual Studio Compiler ?

FYI @ben.boeckel

Since we find VTK without components, everything from VTK should be available. Can you see if there is a VTK::FiltersParallelDIY2 target in lib/cmake/paraview-5.9/vtk/vtk-targets.cmake?

1 Like

@ben.boeckel
Yes, there is an imported target:

# Create imported target VTK::FiltersParallelDIY2
add_library(VTK::FiltersParallelDIY2 SHARED IMPORTED)

set_target_properties(VTK::FiltersParallelDIY2 PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/paraview-5.9"
  INTERFACE_LINK_LIBRARIES "VTK::FiltersCore;VTK::FiltersParallel;VTK::ParallelDIY"
)

I also found some message in cmake-trace-expand may help:

D:/ParaView59/lib/cmake/paraview-5.9/HyperTreeGridADR-targets.cmake(104): if(CMAKE_FIND_PACKAGE_NAME )
D:/ParaView59/lib/cmake/paraview-5.9/HyperTreeGridADR-targets.cmake(105): set(ParaView_FOUND FALSE )
D:/ParaView59/lib/cmake/paraview-5.9/HyperTreeGridADR-targets.cmake(106): set(ParaView_NOT_FOUND_MESSAGE The following imported targets are referenced, but are missing: VTK::FiltersParallelDIY2 )

Hmm. Interesting. That HyperTreeGridADR file should be being included after the find_package(VTK). Are there other hints as to why the target isn’t available at that point from the expanded trace?

1 Like

I found the reason by exploring cmake trace. Its my fault.

find_package(VTK REQUIRED
  ${_paraview_find_package_args})
if (NOT VTK_FOUND)
  set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 0)
endif ()

I have set a environment variable VTK_DIR points to paraview5.7, this cause vtk finder get the wrong position although the variable

${_paraview_find_package_args}

give PATHS parameter points to the correct vtk path.

1 Like