Ubuntu20.04上,VTK9.3在QT5上的环境配置与开发测试

Ubuntu20.04上,VTK9.3在QT5上的环境配置与开发测试

  • 1 背景介绍
  • 2 VTK9.3的编译安装
    • 2.1 安装ccmake 和 VTK 的依赖项:
    • 2.2 建立VTK编译文件夹并下载
    • 2.3 cmake配置VTK9.3的编译环境
    • 2.4 make编译安装VTK9.3
    • 2.5 测试VTK安装是否成功
  • 3 基于qmake的QT5的VTK9.3开发

1 背景介绍

项目需要,需要在Ubuntu上,基于VTK进行QT界面的开发,其中,VTK的版本为9.3,QT具体为5.12.0。然而,现有大部分为基于VTK8.2的QT上位机的界面开发,关于VTK9.3的环境配置与使用方法很少,VTK9.3在VTK8.2上的改动又很多,无法基于VTK8.2的教程复线VTK9.3,因此,这里记录一下环境配置与测试开发过程,以供后续参考。

2 VTK9.3的编译安装

这里,不再详细介绍QT的安装了,这个网上教程非常多,因此,重点仍在VTK9.3的编译安装上。首先,提供VTK9.3的官方编译安装教程,链接如下。这里,我们参考较为简单的安装编译教程,主要步骤如下:

2.1 安装ccmake 和 VTK 的依赖项:

sudo apt install build-essential cmake cmake-curses-gui \
mesa-common-dev mesa-utils freeglut3-dev

上述为参考官方提供的教程,事实上有些依赖与库可能在后续安装是多余的,

2.2 建立VTK编译文件夹并下载

mkdir -p ~/vtk
git clone --recursive https://gitlab.kitware.com/vtk/vtk.git ~/vtk/source

2.3 cmake配置VTK9.3的编译环境

cd vtk
mkdir build
cd build
cmake-gui

上述命令下,将打开cmake的UI界面,配置源文件及生成文件路径,并设置generate为Unix Makefiles,具体如下图所示:
在这里插入图片描述

在完成第一轮configure后,会产生界面如下图所示,其中,需要修改部分配置,主要包括:

  • BUILD_SHARED_LIBS:True;
  • CMAKE_BUILD_TYPE:Release;
  • CMAKE_INSTALL_PREFIX:/usr/local;
  • VTK_GROUP_ENABLE_QT:Yes;
    在这里插入图片描述

修改完成后,点击configure,进行第一次configure,结果如下图所示:
在这里插入图片描述这里,只需修改VTK_QT_VERSION,将其调整为5即可,即默认使用QT5版本。完成后,点击configure,configure成功后,再点击Generate,至此,完成VTK9.3的编译环境的配置

2.4 make编译安装VTK9.3

在上述步骤完成之后,即可开始编译安装VTK9.3。运行命令如下:

sudo make -j8
sudo make install

至此,即完成Ubuntu20.04上,VTK9.3的安装。

2.5 测试VTK安装是否成功

参考官网上,VTK9.3的QT实例,即可验证VTK9.3是否安装成功,参考链接如下。由于该页面有详细使用教程,这里不再赘述。
在这里插入图片描述

3 基于qmake的QT5的VTK9.3开发

由于官方示例中,使用cmake进行环境配置,但是我使用qmake配置,因此,这里补充说明以下,如何通过qmake,完成QT上的VTK9.3的环境配置与开发。
首先,在控件栏选择添加OpenGL Widget,然后,选择该控件,右击并选择提升为,在提升的类名称中输入:QVTKOpenGLNativeWidget;头文件为QVTKOpenGLNativeWidget.h,选择全局,并点击提升。
在这里插入图片描述完成对VTK控件的添加后,在QT的项目配置文件xxxx.pro中,添加头文件与依赖库路径,如下所示:

INCLUDEPATH += $$PWD/../../../../../usr/local/include/vtk-9.3/
LIBS += /usr/local/lib/libvtk*-9.3.so

至此,即完成了QT上的VTK环境的基本配置功能,即可开始项目的具体开发工作。在项目开发过程中,推荐参考官网示例,进行进一步的开发工作,官方示例教程与API参考链接如下。关于项目的测试程序,如有需要,请在评论区提供邮箱。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异地共享文件如何设置?

在当今数字化时代,异地办公已成为常态,越来越多的企业和个人需要在不同地区间进行文件共享与访问。为了解决复杂网络环境下的远程连接问题,北京金万维科技有限公司推出了一款名为【天联】的异地组网内网穿透产品。 【天联】组网是一款由北京金…

python基础——语句

一、条件语句 就是 if else 语句 ! 代表不等于 代表等于if 关键字,判断语句,有“如果”的意思,后面跟上判断语句else 常和“if” 连用,有“否则”的意思,后面直接跟上冒号 …

qt学习第三天,qt设计师的第一个简单案例

3月25,应用qt设计师,手动设计界面形状 ​ 如何启动qt设计师,找到对应的安装地点,对应你自己安装的pyside6或其他qt的安装路径来找 ​ 应用qt设计师的优点是不用敲代码然后慢慢调节框框大小,位置等、可以直接修改…

TTS通用播放库技术设计

TTS音频播放库技术设计 目录介绍 01.整体介绍概述 1.1 项目背景介绍1.2 遇到问题1.3 基础概念介绍1.4 设计目标1.5 问题答疑和思考 02.技术调研说明 2.1 语音播放方案2.2 TTS技术分析2.3 语音合成技术2.4 方案选择说明2.5 方案设计思路2.6 文本生成音频 03.系统TTS使用实践 3…

JavaEE企业开发新技术4

2.16 模拟Spring IOC容器功能-1 2.17 模拟Spring IOC容器功能-2 什么是IOC? 控制反转,把对象创建和对象之间的调用过程交给Spring框架进行管理使用IOC的目的:为了耦合度降低 解释: 模仿 IOC容器的功能,我们利用 Map…

LLM - 大语言模型的指令微调(Instruction Tuning) 概述

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/137009993 大语言模型的指令微调(Instruction Tuning)是一种优化技术,通过在特定的数据集上进一步训练大型语言模型(LLMs)&a…

【算法 高级数据结构】树状数组:一种高效的数据结构(二)

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:算法题、 基础算法、数据结构~赶紧来学算法吧 💡往期推荐: 【算法基础 & 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定…

RTthread如何引入webclient和cjson来编写自己的模块代码||SecureCRT的安装与激活||安装VScode

目录 1.RTthread如何引入webclient和cjson来编写自己的模块代码 2.SecureCRT的安装与激活 3.static与const的区别 4.安装VScode 1.RTthread如何引入webclient和cjson来编写自己的模块代码 以我自己的工程为例: 首先将新引入的模块在applicatons下新建cpeinfo文件…

【MySQL】一条 SQL 查询语句在数据库中的执行流程 | SQL语句中各个关键字的执行顺序

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

知识图表示学习中的负抽样研究综述

摘要 知识图表示学习(KGRL)或知识图嵌入(KGE)在知识构建和信息探索的人工智能应用中起着至关重要的作用。这些模型旨在将知识图中的实体和关系编码到低维向量空间中。在KGE模型的训练过程中&#xff0c;使用正样本和负样本是区分的必要条件。然而&#xff0c;直接从现有的知识…

鸿蒙NXET实战:高德地图定位SDK【获取Key+获取定位数据】(二)

如何申请key 1、创建新应用 进入[控制台]&#xff0c;创建一个新应用。如果您之前已经创建过应用&#xff0c;可直接跳过这个步骤。 2、添加新Key 在创建的应用上点击"添加新Key"按钮&#xff0c;在弹出的对话框中&#xff0c;依次&#xff1a;输入应用名名称&…

Muduo类详解之EventLoop

最核⼼的部分就是 EventLoop 、 Channel 以及 Poller 三个类&#xff0c;其中 EventLoop 可以看作是对业务线程的封装&#xff0c;⽽ Channel 可以看作是对每个已经建⽴连接的封装&#xff08;即 accept(3) 返回的⽂件描述符&#xff09; EventLoop class EventLoop { p…

解决SLF4J: Class path contains multiple SLF4J bindings.

JDK版本&#xff1a;jdk17 IDEA版本&#xff1a;IntelliJ IDEA 2022.1.3 SpringBoot 版本&#xff1a;v2.5.7 maven版本&#xff1a;3.6.3 文章目录 问题描述&#xff1a;原因分析&#xff1a;解决方案&#xff1a;参考资料&#xff1a; 问题描述&#xff1a; 当SpringBoot项目…

并发VS并行

参考文章 面试必考的&#xff1a;并发和并行有什么区别&#xff1f; 并发&#xff1a;一个人同时做多件事&#xff08;射击游戏队友抢装备&#xff09; 并行&#xff1a;多人同时处理同一件事&#xff08;射击游戏敌人同时射击对方&#xff09;

学习数据结构:算法的时间复杂度和空间复杂度

一、算法的复杂度 衡量一个算法的好坏&#xff0c;一般是从时间和空间两个维度来衡量的&#xff0c;即时间复杂度和空间复杂度。 时间复杂度主要衡量一个算法的运行快慢&#xff0c;而空间复杂度主要衡量一个算法运行所需要的额外空间。 算法的时间复杂度 算法中的基本操作的…

SAP BAS中Fiori开发的高阶功能(storyboard, navigation, guided development, variant)

1. 前言 在之前的几篇文章中&#xff0c;我介绍了SAP BAS的一些基本功能&#xff0c;包括账户申请&#xff0c;创建工作区&#xff0c;git的使用以及如何step-by-step去创建出你的第一个Fiori项目等等。在本篇中&#xff0c;我将进一步介绍一些在开发Fiori应用程序时会用到的高…

JAVA学习笔记19(面向对象编程)

1.面向对象编程 1.1 类与对象 1.类与对象的概念 ​ *对象[属性]/[行为] ​ *语法 class cat {String name;int age; }main() {//cat1就是一个对象//创建一只猫Cat cat1 new Cat();//给猫的属性赋值cat1.name "123";cat1.age 10; }​ *类是抽象的&#xff0c;…

前端使用正则表达式进行校验

一、定义 设计思想是用一种描述性的语言定义一个规则&#xff0c;凡是符合规则的字符串&#xff0c;我们就认为它“匹配”了&#xff0c;否则&#xff0c;该字符串就是不合法的。 在 JavaScript中&#xff0c;正则表达式也是对象&#xff0c;构建正则表达式有两种方式&#x…

【可用Claude Opus模型】Claude3国内镜像站,亲测完全超越GPT-4(可用Claude Opus,官网价值20刀)

#今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用Claude 3吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像站到处都是…

探索LLaMA模型:架构创新与Transformer模型的进化之路

引言 在人工智能和自然语言处理领域&#xff0c;预训练语言模型的发展一直在引领着前沿科技的进步。Meta AI&#xff08;前身为Facebook&#xff09;在2023年2月推出的LLaMA&#xff08;Large Language Model Meta AI&#xff09;模型引起了广泛关注。LLaMA模型以其独特的架构…