VTK8.0.0编译+QT5.9.2+VS2017

news2024/11/15 21:50:27

背景

VTK网上资料较多并且使用较多的版本可能是VTK8.2.0,但是由于之前先配置了QT 5.9.2+ msvc2017 + PCL1.8.1 + VTK8.0.0环境,听说有人PCL1.8.1配置VTK8.2.0实测版本不兼容,需修改源码调试,比较麻烦,所以之前就使用的VTK8.0.0版本。

之前配置PCL环境时,因为PCL安装后带的VTK不完整,编译VTK比较麻烦所以当时直接从网上下载的VTK库。现在测试时,发现VTK库在QT Designer中不能生成下面的QVTKWidget控件:

我这里Qt Designer中这样显示的:

因此决定重新编译一下VTK8.0.0测试一下。

编译过程

1、有网友说“VTK_RENDERING_BACKEND设置为OpenGL(这里一定要注意,否则pcl显示框会出错)。”默认是OpenGL2,这个我没有改,后面看会不会出错吧!

2、有网友说“不建议去掉TESTING,这会导致在后期VS编译阶段报错,需要修改头文件。”这个也等着看后面会不会有问题吧!

1、准备工作

首先下载了VTK8.0.0源码(不包含build,build是CMake时后新建的):

CMake下载:

版本cmake-3.28.0-rc2-windows-x86_64,免安装,下载 后找到目录bin文件夹下的cmake-gui.exe打开即可。

2、CMake重新编译VTK8.0.0

打开CMake,设置source code、build the binaries,我这里设置为D:/vtk-v8.0.0,之前新建并设置build目录,这里因为是测试所以新建并设置build_test目录。点击Add Entry添加: 

Name:CMAKE_DEBUG_POSTFIX 、Type:STRING 、Value:-gd、Description:空

让vtk的lib最后分为debug版本跟release版本。Debug版本带-gd。Release版本不带-gd,方便区分。

设置好后如图:

点击左下角的configure按钮,按下面配置后Finish:

第一次configure完成之后:

需要额外勾选上BUILD_EXAMPLES,勾选上VTK_Group_Qt,这样以后方便在qt里面使用

CMAKE_INSTALL_PREFIX存放include,lib,dll(bin)等编译结果的目录。

上面设置好后第二次点击configure,第二次configure完成之后:

出现了这个窗口:

记得第一次CMake时没有出现这个的,算了不管了,接着下面的步骤。

VTK_QT_VERSION改成5。

上面设置好后第三次点击configure,第三次还有报红的:

确认后再次configure,直到最后没有报红项后:

点击Generate:

很快,点击Open Project后VS2017打开项目。

3、VS2017编译

开始64位release编译项目:

编译过程会报错:

该报错是因为CMake中勾选了BUILD_TESTING选项,而CMake的VTK_DATA_ROOT先设置不正确,导致编译时需要先下载vtkdata数据。由于网速或者没有科学上网等原因下载数据的时间 超过了设置的最大等待时间。

解决方法:
下载vtkdata.zip数据,将其解压文件中MD5文件覆盖二进制目录下\ExternalData\Objects\MD5文件。

一遍一遍重新编译,这个文件下载好了,又是相同原因的另一个没有下载下来报错,总是断断续续报错,但是由于VTK-8.0.0版本在网上又找不到对应的vtkdata.zip数据。CMake编译去掉于是去掉BUILD_TESTING选项的勾选重新编译,最后成功。

INSTALL

CMake出来的Visual Studio解决方案里,大多有个INSTALL项目。之前总是完全忽略这个项目,恰好,编译solution的时候,这个又默认被忽略,其实这个很有用。

INSTALL生成后,将会在CMAKE_INSTALL_PREFIX设置的目录下生成下面部分:

VS2017编译成功后将生成的release版本的QVTKWidgetPlugin.dll(有人说QVTKWidgetPlugin.lib、vtkGUISupportQt-8.0.dll、vtkGUISupportQtSQL-8.0.dll也放到目录下)放到以下QT目录下D:\Qt\Qt5.9.2\5.9.2\msvc2017_64\plugins\designer,再打开Qt Designer,这次就出现QVTKWidget了。

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

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

相关文章

Unity 中3D数学基础-向量

本文主要全面讲解向量的数学运算已经对应的实际应用意义! 1.向量的认识 向量(矢量) 有1、2、3维! 向量既可以表示大小也可以表示方向,也可以表示一个空间坐标点!因此他虽然是一个数学数字表示,但是实际空间意义有这三种! 坐标点A(x,y,z) 表示与原点连线构成的方向…

前端常见的数据类型有哪些?

在前端开发中,常见的数据类型包括: 1:字符串(String):表示文本数据,用引号(单引号或双引号)括起来,例如:“Hello, World!”。 创建字符串:let str = ‘Hello, World!’;获取字符串长度:let length = str.length;字符串拼接:let newStr = str1 + str2;2:数字(N…

SystemVerilog(2)——数据类型

一、概述 和Verilog相比,SV提供了很多改进的数据结构。它们具有如下的优点: 双状态数据类型:更好的性能,更低的内存消耗队列、动态和关联数组:减少内存消耗,自带搜索和分类功能类和结构:支持抽…

微信小程序之首页-后台交互及WXS的使用

目录 前言 一. 前后台数据交互及封装request 1.准备后台 1.1 配置数据源 1.2 部分后台获取数据方法编写 2.准备前端 2.1封装Request 2.2 前端JS方法编写 2.3 前端页面展示index.wxml 二.WXS的使用 1.简介 2.WXS优化OA系统 2.1 使用及定义 2.2 导入要使用的项目 2.…

【代码随想录第45天】动态规划5

代码随想录第45天| 动态规划5 1049. 最后一块石头的重量 II494. 目标和474.一和零 1049. 最后一块石头的重量 II LeetCode题目:1049. 最后一块石头的重量 II 代码随想录:1049. 最后一块石头的重量 II 思路就是尽量把石头分成重量总和相等的两堆&#xff…

计算机操作系统-第十二天

目录 进程控制的基本概念 什么是进程控制 如何实现进程控制 如何实现原语的”原子性“ 与进程控制相关的原语 进程创建中的原语 进程终止中的原语 进程的阻塞和唤醒中的原语 进程的切换中的原语 知识滚雪球-程序是如何运行的?: 本节思维导图 进…

数据可视化与GraphQL:利用Apollo创建仪表盘

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

第二证券:风电概念强势拉升,威力传动“20cm”涨停,双一科技等大涨

风电概念20日盘中强势拉升,到发稿,威力传动“20cm”涨停,双一科技涨超17%,顺发恒业亦涨停,金雷股份、大金重工涨约7%,新强联、海力风电涨超5%。 音讯面上,9月以来江苏、广东海风项目加快推动&a…

前端数据可视化之【title、legend、tooltip、toolbox 】配置项

目录 🌟Echarts配置项🌟Echarts配置项之 title组件🌟Echarts配置项之 legend组件🌟Echarts配置项之 tooltip组件🌟Echarts配置项之 toolbox组件🌟写在最后 🌟Echarts配置项 ECharts开源来自百度…

如何解决香港服务器使用的常见问题

​  站长们在选择香港服务器租用时会考虑到它的各种性能以及稳定性,这是必须的。但是使用过程中还有些问题也不容忽视,比如:带宽资源是否短缺,是否存在安全漏洞,连接是否正常等这些问题也要考虑到。 香港服务器使用中…

百度地图API:JavaScript开源库几何运算判断点是否在多边形内(电子围栏)

百度地图JavaScript开源库,是一套基于百度地图API二次开发的开源的代码库。目前提供多个lib库,帮助开发者快速实现在地图上添加Marker、自定义信息窗口、标注相关开发、区域限制设置、几何运算、实时交通、检索与公交驾车查询、鼠标绘制工具等功能。 判…

搭建一个windows的DevOps环境记录

边搭建边记录,整个DevOps环境的搭建可能会很久。。。 一、安装Jenkins: 参考:Jenkins基础篇--windows安装Jenkins-CSDN博客 注意上面选择JDK的路径,选择到安装目录,该目录并不一定要在path中配置了(就是…

Qt基础 QScatterSeries

QScatterSeries类是Qt Charts模块的一部分,用于表示散点图。 QScatterSeries* series new QScatterSeries(); // 创建离散点数据series->setName("圆点样式");series->setMarkerShape(QScatterSeries::MarkerShapeCircle); //设置位圆形series-&…

SpringBoot + MyBatis 在 jar 中可以启动但是 Idea中无法启动的原因

现象 在idea中启动始终卡住,查看线程堆栈发现一直在mybatis的处理过程中,细究了一下堆栈发现mybatis有使用远程方式加载类的情况,并且此时cpu会飙升, 在命令行中使用java -jar 的形式可以正常启动,但是在idea中启动始…

论文阅读 | RAFT: Recurrent All-Pairs Field Transforms for Optical Flow

RAFT: Recurrent All-Pairs Field Transforms for Optical Flow ECCV2020光流任务best paper 论文地址:【here】 代码地址:【here】 介绍 光流是对两张相邻图像中的逐像素运动的一种估计。目前碰到的一些困难包括:物体的快速运动&#xff…

UE4 UltraDynamicSky 天气与水体交互

最上面的Lerp的A通道为之前的水面效果,B是做的冰面效果 用Dynamic_Landscape_Weather_Effects的BaseColor的R通道四舍五入作为Lerp的Alpha值 使用一张贴图,乘以RadialGradientExponential对材质边缘做弱化,RadialGradientExponential的Raid…

4.7 IP多播

思维导图: **4.7.1 IP多播的基本概念** --- **1. 定义和背景** - IP多播:从一个源点发送信息至多个终点的技术。 - 1988年:Steve Deering首次提及IP多播。 - 1992年:IETF进行了首次IP多播试验,当时有20个网点参与。 …

Python算法:八大排序算法以及速度比较

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

大数据测试用例分析

基于大数据分析,对业务系统产生的日志进行智能分析,能够识别日志中的接口、参数、业务流,并依据分析的结果生成测试用例。 问题与背景 业务复杂 业务系统的复杂性,对测试人员的业务能力提出严格要求,加重测试成本。 …

【深度学习-第4篇】使用MATLAB快速实现CNN多变量回归预测

上一篇我们讲了使用CNN进行分类的MATLAB代码。 这一篇我们讲CNN的多变量回归预测。 是的,同样是傻瓜式的快速实现。 一、什么是多变量回归预测 多变量回归预测则是指同时考虑多个输入特征进行回归预测。举几个例子: 房价预测:给定一组房…