使用CMake查找给定的VTK模块

时间:2015-12-15 16:54:27

标签: cmake vtk

我目前正在尝试在vtk for android上为我的数据集添加剪裁平面。 到目前为止代码没问题,但我有问题构建.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

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

编辑:

我确实检查过具有set(VTK_MODULES_DIR "/Users/.../VTK/vtkbin/lib/cmake/vtk-7.1/Modules")的VTKConfig.cmake。上述目录确实包含vtkInteractionWidgets.cmake

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

1 个答案:

答案 0 :(得分:1)

所以它必须在vtkAndroid.cmake的{​​{1}}文件中手动完成。应该在一些行内部手动添加每个所需的模块:

VTK_SOURCE/CMake/vtkAndroid.cmake

在我的情况下,我需要添加:# Now cross-compile VTK with the android toolchain set(android_make_flags -DANDROID_NDK:PATH=${ANDROID_NDK} #... -DModule_vtkFiltersCore:BOOL=ON #...