使用 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.cmake
的 vtkAndroid.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
我目前正在尝试为 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.cmake
的 vtkAndroid.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