知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。
之前在 Windows 上完成了使用 Visual Studio 构建 VTK,这一篇结合实现 Qt 在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK。之前的文章链接为:【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK。
文章目录
- 1 版本环境
- 2 构建步骤
- 1 准备文件夹结构
- 2 运行 CMake
- 这里的图需要替换
- 图需要替换
- 3 在 Visual Studio 中构建
- 3 测试是否成功
- 1 新建工程
- 2 工程配置
- 3 运行结果
- 附录
- Ref.
1 版本环境
- win11
- visual studio 2022
- VTK-9.2.6
- CMake 3.26.3
- Qt 6.2.8
2 构建步骤
建议全程打开 CMake 和 Visual Studio 时均使用管理员身份,防止不必要的麻烦。同时,如果电脑上提前在 Visual Studio 里安装了 Qt VS Tool,那么请提前卸载,最好再重启一下电脑。
如果不知道如何安装卸载 Qt VS Tool,可以参考:【VisualStudio】基于 Visual Studio 使用 C++ 语言开发 Qt 环境配置教程。
1 准备文件夹结构
我是在 C 盘创建了一个 VTKFolders
来保存所有需要的文件。
2 运行 CMake
使用 CMake 生成一个 visual studio 解决方案。
首先以管理员身份打开 CMake-GUI。配置好资源文件夹和 build 文件夹。然后点击 Configure。
会弹出一个选择框,选择适合自己的配置,然后 Finish。
我电脑上安装了一个 32 位的 Qt 5.12.12 和 64 位的 Qt 6.2.8,测试了好多遍 Qt 5,都是不能用,所以我选择了 64 位的 Qt 6.2.8来安装,至于 32 位的 Qt 6 系列能不能用,我没有测试。
这里的图需要替换
我们现在有几个选项,可以根据需要打开或关闭。如:
- 修改 CMAKE_INSTALL_PREFIX 为你想指定的文件夹
- 勾选 Advanced,搜索 qt,将所有选项都选成 Yes。
然后点击 Configure,可以多点击几次,一直到没有红色警告提示了。
这时候有可能会出现找不到 Qt 的情况,这是因为 Qt 的环境没有添加到系统的环境变量里。可以通过下图所示,将 Qt 添加到环境变量。注意,由于各自配置的文件夹不同,所以路径仅供参考。
不知道怎么打开系统环境变量的可以根据以下提示:
[start -> Edit the system environment variables -> Advanced -> Environment Variables -> Path -> Edit -> New]
配置完系统环境变量后,然后重启 CMake-GUI,再次 Configure,即可自动搜索到 Qt。
之后 Generate,这将填充 VTK-build 子文件夹。Open Project 就进入到 Visual Studio 工程里了。
图需要替换
3 在 Visual Studio 中构建
选择 Release 和 X64。
然后选择右键 ALL_BUILD -> 生成。
根据电脑性能不同,花费时间也不同。我电脑用了 3 分钟,报告显示成功 270,有 2 个失败。我继续往下进行了,目前问题不大。
然后我们就可以在文件夹中看到很多 .dll
文件。
放一下我自己的文件夹路径仅供参考 C:\VTKFolders\VTK-build\bin\Release
。
然后出错了 setlocal 的错误。这是一个比较典型的错误,我也尝试了网上分享的几种办法,但是都不适合我。
尝试下边这种解决办法。将生成后事件改成了否。然后再右键 INSTALL 工程,点击重新生成。
虽然不再报错 setlocal,但是还是不行。
最后尝试使用管理员身份打开 Visual Studio 工程,然后再右键 INSTALL 工程,点击重新生成,还是不行。
最后的最后,发现不用管,往下就行了。
3 测试是否成功
1 新建工程
如果一切顺利,那么现在应该可以编译并运行 C++ 示例了。
这里我测试的是,是否能将 Widget 控件提升为 QVTKOpenGLNativeWidget 并成功运行。
新建一个 Qt 工程,名字为 VTKTest,拖进一个 Widget 控件,提升其为 QVTKOpenGLNativeWidget 并得到如下图所示的工程界面。
不知道怎么进提升 Widget 的可参考:【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面。
2 工程配置
然后添加 Qt OpenGLWidgets。
不知道怎么进入这个界面可参考:【Visual Studio】报错 LNK2019,使用 C++ 语言,配合 Qt 开发串口通信界面 或 【Visual Studio】报错 C1083,使用 C++ 语言,配合 Qt 开发串口通信界面。
然后按照下图所示添加需要的库文件。
不知道如何打开这个界面的可参考:【Visual Studio】合并C++工程的 .h .lib .dll 文件,包括全部配置过程。Bug 报错 E1696 无法打开源文件,使用 C++ 语言,配合 Qt 开发串口通信界面。
同时再截图一下自己的 Qt 版本。有时候也会因为版本问题会出现各种错误。
3 运行结果
运行成功后的结果如下图所示:
附录
因为一直配置不成功,中间还尝试过更换 VTK 的版本,更换为 VTK-9.0.3 后,结果错误更多了。
所以最后还是狠下心,就是搞现在手里这个版本把。索性最后把所有错误都犯了一遍后,也成功了。
Ref.
- VTK与QT源码编译和示例
- QT5+VTK9.1最新配置方法
QVTKOpenGLNativeWidget在Qt中的用法
我的第一个VTK程序–绘制球体
VTK读取一个TXT文档中的三维点坐标显示三维点云
VTK以批量三维点坐标为中心(点云)绘制球体,可用于标识特征点或者是化学分子
VTK 配置.md
VTK v9.0新版本找不到QVTKWidget.h头文件了?Qt设计师怎么办?