编译 VTK

可视化工具包 (VTK) 是一种用于操作和显示科学数据的开源软件。它配备了最先进的 3D 渲染工具,一套用于 3D 交互的小部件,以及广泛的 2D 绘图功能。VTK 是 Kitware 软件开发 支持 平台集合的一部分。该平台在全球范围内用于商业应用和研发。例如,请参阅 VTK in Action
https://www.vtk.org/about

这里以 VTK 9.1.0 为例

Prerequisites

参考 VTK Documentation >> build.md#prerequisites

  • CMake >= 3.12 (越新越好)
  • Qt >= 5.9

下载

下载完整仓库(不推荐)
1
2
3
4
5
> git clone --recursive https://gitlab.kitware.com/vtk/vtk.git
> cd .\vtk\
> git checkout v9.1.0
> cd ThirdParty\vtkm\vtkvtkm\vtk-m
> git checkout 4df064f37
精简下载
1
> git clone --recursive --branch v9.1.0 --depth=1 https://gitlab.kitware.com/vtk/vtk.git

配置与编译

  1. 运行 CMake-GUI 并将源码目录设置为 clone 下来的 vtk 仓库目录, 并自行指定 build 目录.

  2. 使用 Add Entry 按钮添加缓存变量 CMAKE_DEBUG_POSTFIX,类型为 STRING,值设置为 -gd。这是为了将最后编译的 debug 文件与 release 文件区分开来。

  3. 点击 Configure, 选择安装的 Visual Studio 的版本,选择 x64 平台,选择平台工具集 v141(对应 VS2017 默认的平台工具集),点击 Finish 开始配置。

  4. 修改 CMAKE_INSTALL_PREFIX 变量,指定安装目录。

  5. 可以选择需要构建的内容,这里 只勾选 BUILD_SHARED_LIBS,不对文档、示例和测试进行生成,这样可以节省生成和构建的时间。

    • BUILD_DOCUMENTATION,
    • BUILD_EXAMPLES,
    • BUILD_SHARED_LIBS,
    • BUILD_TESTING。
  6. 使用 CMake-GUI 中的搜索框,输入 Qt,将自动过滤出与 Qt 相关的配置项:将

    • VTK_GROUP_ENABLE_Qt,
    • VTK_MODULE_ENABLE_VTK_GUISupportQtSQL
    • VTK_MODULE_ENABLE_VTK_GUISupportQt
    • VTK_MODULE_ENABLE_VTK_GUISupportQtQuick
    • VTK_MODULE_ENABLE_VTK_RenderingQt
    • VTK_MODULE_ENABLE_VTK_ViewsQt
      设置为 WANT;
    • VTK_QT_VERSION 设置为 5。
      注意,不同版本 VTK 在这里显示出来的选项可能不同,如果看到了 VTK_Group_Qt, 将其勾选即可。
  7. 再次点击 Configure, 然后通过搜索框过滤 Qt, 检查相关项的 _DIR 是否检测成功, 否则需手动指定。完成后点击 Configure, 然后点击 Generate 生成 VS 解决方案。点击 Open Project, 将自动通过 VS 打开。

  8. 点击 CMake-GUI >> Tools >> Show My Changes 可以看到自己所做的修改如下

    My Changes
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Commandline options:
    -DVTK_GROUP_ENABLE_Qt:STRING="WANT" -DVTK_MODULE_ENABLE_VTK_GUISupportQtSQL:STRING="WANT" -DVTK_MODULE_ENABLE_VTK_GUISupportQt:STRING="WANT" -DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick:STRING="WANT" -DVTK_MODULE_ENABLE_VTK_RenderingQt:STRING="WANT" -DVTK_MODULE_ENABLE_VTK_ViewsQt:STRING="WANT" -DVTK_QT_VERSION:STRING="5"


    Cache file:
    VTK_GROUP_ENABLE_Qt:STRING=WANT
    VTK_MODULE_ENABLE_VTK_GUISupportQtSQL:STRING=WANT
    VTK_MODULE_ENABLE_VTK_GUISupportQt:STRING=WANT
    VTK_MODULE_ENABLE_VTK_GUISupportQtQuick:STRING=WANT
    VTK_MODULE_ENABLE_VTK_RenderingQt:STRING=WANT
    VTK_MODULE_ENABLE_VTK_ViewsQt:STRING=WANT
    VTK_QT_VERSION:STRING=5

  9. 在 VS 中点击 生成 >> 批生成: 勾选如下选项后点击 生成 , 等待 VS 自动完成生成与安装。

    • ALL_BUILD,Debug,x64
    • ALL_BUILD,Release,x64
    • INSTALL,Debug,x64
    • INSTALL,Release,x64
  10. 在安装目录可以看到如下库文件结构

    show-tree -depth 2
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    D:\ProgramFiles\VTK\VTK9.1.0
    ├──bin
    ├──include
    │ └──vtk-9.1
    ├──lib
    │ ├──cmake
    │ ├──qml
    │ └──vtk
    └──share
    └──licenses

作为第三方库使用

在 CMakeLists.txt 中加入如下内容, 并且在 Configure 时可能需要指定安装目录
-DVTK_DIR:PATH="D:/ProgramFiles/VTK/VTK9.1.0/lib/cmake/vtk-9.1"

CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

...

find_package(VTK REQUIRED)

add_executable(${PROJECT_NAME}
...
)

target_link_libraries(${PROJECT_NAME}
${VTK_LIBRARIES}
)

vtk_module_autoinit(
TARGETS ${PROJECT_NAME}
MODULES ${VTK_LIBRARIES})

程序运行时需确保 vtk 相关 dll 能够被找到。

参考

作者

Luo Siyou

发布于

2022-11-05

更新于

2023-01-09

许可协议