Linux/VTK-从源代码编译VTK
可视化工具包 (Visualization Toolkit, VTK) 是用于操作和显示科学数据的开源软件。它配备了最先进的3D渲染工具、一套用于3D交互的小部件和广泛的2D绘图功能。VTK是Kitware软件开发平台集合的一部分。该平台在全球范围内用于商业应用以及研发。
1. 准备基础环境
Ubuntu/Debian
sudo apt install mesa-common-dev mesa-utils freeglut3-dev libgl1-mesa-dev libglu1-mesa-dev libglut-dev
Fedora
sudo yum install mesa-libGL-devel mesa-libGLU-devel freeglut-devel
2. 下载源代码
3. 配置cmake
以初次使用ccmake为例,括号内为建议值或默认值。更多配置项建议参考:构建设置 - VTK 文档
BUILD_SHARED_LIBS (ON)
如果ON,则构建动态链接库,如果OFF,则构建静态链接库。
CMAKE_BUILD_TYPE (release)
构建类型,选择release或者debug。
CMAKE_INSTALL_PREFIX (/usr/local)
安装路径,也可以设置为你自己的路径,需要设置为系统的绝对路径。
OPENGL_GLES2_INCLUDE_DIR (OPENGL_GLES2_INCLUDE_DIR-NOTFOUND)
OPENGL_GLES3_INCLUDE_DIR (OPENGL_GLES3_INCLUDE_DIR-NOTFOUND)
OpenGL ES支持,如果你不做相应开发,则不需要指定此路径,不影响编译。
VTK_BUILD_DOCUMENTATION (OFF)
是否编译开发VTK文档和VTK C++ API文档,如果设置为ON,需要系统中安装有Doxygen。
VTK_BUILD_EXAMPLES (OFF)
如果设置ON,将编译VTK的示例代码,作为测试添加到VTK目标位置。
VTK_BUILD_SCALED_SOA_ARRAYS (OFF)
调度支持方面的异常值是派生的数组系列,在构建设置时自动包含在调度中,警告:在调度机制中添加越来越多的数组会大大减慢编译时间,直接设置成OFF。
VTK_BUILD_TESTING (OFF)
是否构建测试。
VTK_EXTRA_COMPILER_WARNINGS (OFF)
额外的编译器警告。
VTK_GROUP_ENABLE_Imaging (DEFAULT)
建议默认。
VTK_GROUP_ENABLE_MPI (DONT_WANT)
使用MPI并行渲染,一般不需要用到,如果设置成YES,则需要VTK_USE_MPI项也设置成ON,且依赖系统中MPI实现。
VTK_GROUP_ENABLE_Qt (ON)
是否包含Qt组件,建议设置为ON,且需要系统已安装Qt并指定Q路径,注意,Qt版本需要5.12以上,使用apt安装的qt版本可能无法满足要求,建议独立安装Qt。
如果你已经安装了Qt,将配置项Qt5_DIR设置为<qt5_dir>/gcc_64/lib/cmake/Qt5,注意看其他Qt5配置项是否跟随此路径设置,否则在生成的makefile中可能会链接其他版本的Qt库,导致编译失败,如果是因为此原因导致的问题,也可以直接修改makefile。
VTK_GROUP_ENABLE_Rendering (YES)
VTK_GROUP_ENABLE_StandAlone (YES)
VTK_GROUP_ENABLE_Views (YES)
VTK_GROUP_ENABLE_Web (YES)
VTK可选模块,选择NO不影响最终编译,只会导致一些可选功能缺失。注意web模块需要其他多项模块开启才能使用。
VTK_PYTHON_VERSION (3)
Python支持版本,即使设置了也不一定会编译Python支持模块。
VTK_SMP_IMPLEMENTATION_TYPE (OpenMP)
设置SMPTools默认实现方式,并行效率肯定大于串行,其中TBB实现方式最快,但需要系统安装有oneAPI(参考之前oneAPI文章)。
VTK_USE_CUDA (OFF)
CUDA支持,需要系统中已经安装了CUDA环境(nVidia卡+nVidia驱动+CUDA Toolkit),此项在没有英伟达显卡或虚拟机环境中不适用。
VTK_USE_LARGE_DATA (OFF)
是否启用使用“数据的测试(通常用于 减少测试套件所需的数据下载量),设置为OFF不影响最终编译。
VTK_USE_MEMKIND (OFF)
是否需要MEMKIND库支持,设置为OFF不影响最终编译。
VTK_USE_MPI (OFF)
是否使用MPI。
VTK_WRAP_JAVA (OFF)
是否支持JAVA。
VTK_WRAP_PYTHON (ON)
是否支持Python,需要系统中安装有Python,并指定Python3_EXECUTABLE和Python3_LIBRARY配置项。
X11_xcb_xkb_INCLUDE_PATH (/usr/include)
需要系统安装X11环境。
4. 编译源代码
检查无误后然后编译源代码,多核心电脑上可以使用make -j4,如果内存够大,也可以使用make -j,但请注意,并行编译对内存消耗极大。
mkdir build cd build cmake ..
make -j4
make install
5. 可能出现的bug
(1) 在VTK-9.0.1中
/vtk-v9.0.1/Common/Core/vtkGenericDataArray.h
/vtk-v9.0.1/Common/Core/vtkGenericDataArrayLookupHelper.h
/vtk-v9.0.1/Common/DataModel/vtkPiecewiseFunction.h
/vtk-v9.0.1/Filters/HyperTree/vtkHyperTreeGridThreshold.h
/vtk-v9.0.1/Rendering/Core/vtkColorTransferFunction.h
以上文件需要添加头文件#include <limits>。
(2) 在VTK-8.2.0中
会出现报错“error: aggregate ‘QPainterPath path’ has incomplete type and cannot be defined”
在出现错误的cxx文件前加入头文件

浙公网安备 33010602011771号