Linux(Ubuntu24.04)源码编译安装VTK9.2记录

        本次安装VTK9.2是在WSL2的Ubuntu24.04环境下进行。

1、安装依赖

        首先,确保系统安装了必要的依赖项:

  • sudo apt install libxt-dev 
    sudo apt install libgl1-mesa-dev libglu1-mesa-dev
    sudo apt install libopenmpi-dev openmpi-bin
  • libxt-dev: 这是X Toolkit库的开发包,提供了X11窗口系统的工具包支持。VTK的图形界面和渲染功能依赖于X11窗口系统,因此需要libxt-dev来确保相关功能正常编译和运行。
  • libgl1-mesa-dev: 这是Mesa OpenGL库的开发包,提供了OpenGL的实现。VTK使用OpenGL进行3D图形渲染,因此需要libgl1-mesa-dev来支持OpenGL相关的功能。
  • libglu1-mesa-dev: 这是Mesa GLU库的开发包,提供了OpenGL实用库(GLU)。GLU库包含了一些高级OpenGL功能,如曲面细分和几何处理,VTK在渲染复杂图形时会用到这些功能。
  • libopenmpi-dev: 这是OpenMPI的开发包,提供了MPI(Message Passing Interface)的实现。MPI是一种用于并行计算的通信协议,常用于高性能计算(HPC)和分布式系统中。VTK支持并行处理(例如并行渲染和数据处理),如果启用了VTK的并行功能(如VTK_USE_MPI),则需要libopenmpi-dev来编译和链接MPI相关的代码。
  • openmpi-bin: 这是OpenMPI的运行时工具包,包含了MPI程序的运行环境。在运行使用MPI的VTK程序时,openmpi-bin提供了必要的运行时支持(如mpirun命令)。

2、获取v9.2版本的VTK源码

        clone源码后,checkout切换tag为v9.2.4,如需其它版本可以自行切换。

  • git clone https://github.com/Kitware/VTK
    cd VTK
    git checkout v9.2.4

 3、编译安装

        创建build文件夹并进入执行cmake: 

  • mkdir build && cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local \
             -DVTK_GROUP_ENABLE_StandAlone=YES \
             -DVTK_GROUP_ENABLE_MPI=YES \
             -DVTK_USE_MPI=ON \
             -DVTK_BUILD_TESTING=ON \  #可选OFF
             -DVTK_BUILD_EXAMPLES=ON \ #可选OFF
             -DVTK_WRAP_PYTHON=OFF     #此处关闭Python相关功能

        如需Python相关模块功能,需要将-DVTK_WRAP_PYTHON=OFF改为:

  •       -DVTK_WRAP_PYTHON=ON \
          -DVTK_PYTHON_VERSION=3 \
          -DPython3_EXECUTABLE=/usr/bin/python3 \

        cmake执行结束无问题后,使用make编译安装:

  • make -j$(nproc)
    sudo make install

4、验证VTK

4.1 验证vtk版本
  • #cmake阶段设置了-DVTK_BUILD_TESTING=ON -DVTK_BUILD_EXAMPLES=ON
    vtkVersion 
    #或者通过头文件查看
    cat /usr/local/include/vtk-9.2/vtkVersionMacros.h | grep VTK_VERSION
    #define VTK_VERSION "9.2.4"
    #define VTK_SOURCE_VERSION "vtk version " VTK_VERSION
    #define VTK_VERSION_CHECK(major, minor, build)                                                     \
    #define VTK_VERSION_NUMBER                                                                         \
      VTK_VERSION_CHECK(VTK_MAJOR_VERSION, VTK_MINOR_VERSION, VTK_BUILD_VERSION)
4.2 验证 Python 绑定(如果开启了Python模块功能)

        安装完成后,可以通过以下命令验证 Python 绑定是否成功:

  • python3 -c "import vtk; print(vtk.vtkVersion.GetVTKVersion())"

5、总结

cmake参数说明:

  • -DCMAKE_INSTALL_PREFIX=/usr/local:指定安装路径。

  • -DVTK_GROUP_ENABLE_StandAlone=YES:启用独立模块。

  • -DVTK_GROUP_ENABLE_MPI=YES:启用 MPI 支持。

  • -DVTK_USE_MPI=ON:启用 MPI。

  • -DVTK_BUILD_TESTING=OFF:禁用测试(加快构建速度)。

  • -DVTK_WRAP_PYTHON=ON:启用 Python 绑定。

  • -DVTK_PYTHON_VERSION=3:指定 Python 3 绑定。

        如果后续需要安装PCL,一定需要启用MPI支持; 如果不使用 Python,完全可以不开启 DVTK_WRAP_PYTHON 和DVTK_PYTHON_VERSION。这样可以简化构建过程,减少构建时间和安装体积。只需在 CMake 配置中确保 DVTK_WRAP_PYTHON=OFF 即可。

       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949821.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【姿态估计实战】使用OpenCV和Mediapipe构建锻炼跟踪器【附完整源码与详细说明】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

快速上手Python,制作趣味猜数字游戏

在编程学习的旅程中,游戏是一个极佳的切入点。今天,我们将一起创建一个简单而有趣的猜数字游戏,借此机会深入学习Python编程的基础知识和一些实用的编程技巧。无论你是初学者还是有一定基础的开发者,相信你都能从中获得乐趣和收获…

AI驱动的可演化架构与前端开发效率

1. 引言 在当今快节奏的数字时代,软件系统需要具备强大的适应能力才能在瞬息万变的市场需求中保持竞争力。软件可演化架构的重要性日益凸显,它能够让软件系统在面对需求变更、技术升级以及市场波动时,能够快速、高效地进行调整和升级&#x…

用豆包MarsCode IDE打造精美数据大屏:从零开始的指南

原标题:用豆包MarsCode IDE,从0到1画出精美数据大屏! 豆包MarsCode IDE 是一个云端 AI IDE 平台,通过内置的 AI 编程助手,开箱即用的开发环境,可以帮助开发者更专注于各类项目的开发。 作为一名前端开发工…

基于RK3568/RK3588大车360度环视影像主动安全行车辅助系统解决方案,支持ADAS/DMS

产品设计初衷 HS-P2-2D是一款针对大车盲区开发的360度全景影像 安全行车辅助系统,通过车身四周安装的超广角像机,经算法合成全景鸟瞰图,通过鸟瞰图,司机非常清楚的看清楚车辆四周情况,大大降低盲区引发的交通事故。 产…

pygame飞机大战

飞机大战 1.main类2.配置类3.游戏主类4.游戏资源类5.资源下载6.游戏效果 1.main类 启动游戏。 from MainWindow import MainWindow if __name__ __main__:appMainWindow()app.run()2.配置类 该类主要存放游戏的各种设置参数。 #窗口尺寸 #窗口尺寸 import random import p…

c++ 两线交点计算程序(Program for Point of Intersection of Two Lines)

给定对应于线 AB 的点 A 和 B 以及对应于线 PQ 的点 P 和 Q,找到这些线的交点。这些点在 2D 平面中给出,并带有其 X 和 Y 坐标。示例: 输入:A (1, 1), B (4, 4) C (1, 8), D (2, 4) 输出:给定直线 AB 和…

Taro+react 开发第一节创建 带有redux状态管理的项目

Taro 项目基于 node,请确保已具备较新的 node 环境(>16.20.0),推荐使用 node 版本管理工具 nvm 来管理 node,这样不仅可以很方便地切换 node 版本,而且全局安装时候也不用加 sudo 了。 1.安装 npm inf…

2024AAAI SCTNet论文阅读笔记

文章目录 SCTNet: Single-Branch CNN with Transformer Semantic Information for Real-Time Segmentation摘要背景创新点方法Conv-Former Block卷积注意力机制前馈网络FFN 语义信息对齐模块主干特征对齐共享解码头对齐 总体架构backbone解码器头 对齐损失 实验SOTA效果对比Cit…

代码随想录 数组test5(leetcode 59.螺旋矩阵)

59. 螺旋矩阵 II - 力扣(LeetCode) 大致的想法是从起点开始以顺时针走到中心,有两种实现方式:一圈一圈赋值或者每走一步就赋值 方法一:按圈循环 思路: 外层循环是要循环的圈数,这里需要分奇偶讨论,若题目给出的n为偶…

向成电子XC3588H工控主板助力内窥镜应用升级

随着微创手术在全球范围内普及,内窥镜应用越来越广泛。利用内窥镜,医生可以看到X射线不能显示的病变,对医疗诊断有非常重要的作用。内窥镜设备凝聚了先进的影像技术,提供高画像精度诊断微小的病变。在设备智能化的今天&#xff0c…

基于SpringBoot的音乐网站与分享平台

基于SpringBoot的音乐网站与分享平台 摘要1. 研究背景2.研究内容3.系统功能 3.1前台首页功能模块3.2在线听歌功能模块3.3后台登录功能模块3.4在线听歌管理模块 4.部分功能代码实现5.源码分享(免费获取) 需要源码联系我即可(免费获取)~ ??大家点赞、收藏、关注、评论啦 、查…

nginx-灰度发布策略(split_clients)

一. 简述: 基于客户端的灰度发布(也称为蓝绿部署或金丝雀发布)是一种逐步将新版本的服务或应用暴露给部分用户,以确保在出现问题时可以快速回滚并最小化影响的技术。对于 Nginx,可以通过配置和使用不同的模块来实现基于…

【数据结构】栈与队列(FIFO)

在阅读该篇文章之前&#xff0c;可以先了解一下堆栈寄存器和栈帧的运作原理&#xff1a;<【操作系统】堆栈寄存器sp详解以及栈帧>。 栈(FILO) 特性: 栈区的存储遵循着先进后出的原则。 例子: 枪的弹夹&#xff0c;最先装进去的子弹最后射出来&#xff0c;最后装入的子弹…

python基础案例

#一个年份如果能被4整除但不能被 100整除&#xff0c;或能被 400整除&#xff0c;那么这个年份就是闰年。 year int(input(请输入年份&#xff1a;)) if (year %40 and year %100!0) or year %4000:print("这个年份就是闰年") else:print("这个年份不是闰…

微服务框架,Http异步编程中,如何保证数据的最终一致性

一、背景 在微服务框架下&#xff0c;跨服务之间的调用&#xff0c;当遇到操作耗时或者量大的情况&#xff0c;我们一般会采用异步编程实现。 本文出现的问题是&#xff1a;异步回调过来时&#xff0c;却未查询到数据库中的任务&#xff0c;导致未能正常处理回调。 下面是当…

Kafka详解 ③ | Kafka集群操作与API操作

目录 1、Kafka集群操作 1.1、创建 topic 1.2、查看主题命令 1.3、生产者生产 1.4、消费者消费数据 1.5、运行 describe topics命令 1.6、增加 topic分区数 1.7、增加配置 1.8、删除配置 1.9、删除 topic 2、Kafka的Java API操作 2.1、生产者代码 2.2、消费者代 2…

Echarts集成Vue2个人总结与反思

协同净焦水处理系统 统计模块 环境部署 1、创建数据库ry-cloud并导入数据脚本ry_2021xxxx.sql&#xff08;必须&#xff09;&#xff0c;quartz.sql&#xff08;可选&#xff09; 2、创建数据库ry-config并导入数据脚本ry_config_2021xxxx.sql&#xff08;必须&#xff09; …

aardio —— 虚表 —— 模拟属性框

写了个简单的属性框例程&#xff0c;抛砖引玉&#xff0c;期待你做出更丰富强大的功能。 本例演示&#xff1a;折叠子行、选择框、输入文本、输入数值、下拉选择、选择图片、选择颜色、选择字体等功能。 只有想不到&#xff0c;没有做不到&#xff0c;发挥你的想象力吧。 imp…

《Vue3 七》插槽 Slot

插槽可以让组件的使用者来决定组件中的某一块区域到底存放什么元素和内容。 使用插槽&#xff1a; 插槽的使用过程其实就是抽取共性、预留不同。将共同的元素、内容依然留在组件内进行封装&#xff1b;将不同的元素使用 slot 作为占位&#xff0c;让外部决定到底显示什么样的…