使用 CMake 查找给定的 VTK 模块

Finding a given VTK module with CMake

我目前正在尝试为 android 在 vtk 上为我的数据集添加一个裁剪平面。 到目前为止代码没有问题,但我在构建 .apk 时遇到问题,因为我的程序无法编译。 为了能够按照我的意图使用裁剪平面,我有以下内容:

#include <vtkTransformPolyDataFilter.h>
#include <vtkClipPolyData.h>
#include <vtkSampleFunction.h>
#include <vtkPlane.h>
#include <vtkImplicitPlaneWidget2.h>
#include <vtkImplicitPlaneRepresentation.h>

然而当我尝试编译时(感谢 Cmake 生成的 Makefile)我得到:

error: vtkImplicitPlaneWidget2.h: No such file or directory
 #include <vtkImplicitPlaneWidget2.h>

所以我认为我应该尝试将 vtkInteractionWidgets 组件添加到我的 CMakeLists.txt 中的 find_package() 以获得此:

find_package(VTK COMPONENTS
  vtkInteractionStyle
  vtkRenderingOpenGL2
  vtkRenderingVolumeOpenGL2
  vtkRenderingFreeType
)

然而当我这样做时,我得到:

Requested modules not available:
vtkInteractionWidgets

所以我检查了 vtkbin/lib/cmake/vtk-7.1/Modules 中的模块列表,我可以清楚地看到:vtkInteractionWidgets.cmake

任何帮助将不胜感激,提前致谢:)。


编辑:

我确实检查了 VTKConfig.cmake,其中有:set(VTK_MODULES_DIR "/Users/.../VTK/vtkbin/lib/cmake/vtk-7.1/Modules")。如上所述,该目录确实包含 vtkInteractionWidgets.cmake

但是我注意到我的 /Users/.../VTK/vtkbin/CMakeExternals/Install/vtk-android/lib 不包含等效的库。我唯一包含关键字交互的库是:libvtkInteractionStyle-7.1.a

所以这必须在 VTK_SOURCE/CMake/vtkAndroid.cmakevtkAndroid.cmake 文件中手动完成。里面应该有一些行来手动添加每个需要的模块:

# Now cross-compile VTK with the android toolchain
set(android_make_flags
  -DANDROID_NDK:PATH=${ANDROID_NDK}
  #...
  -DModule_vtkFiltersCore:BOOL=ON
  #...

在我的例子中,我需要添加:-DModule_vtkInteractionWidgets:BOOL=ON