Advertisement

MingW跨平台编译QT VTK

阅读量:

作为一名小研究生,在实验室中负责与通用公司合作开发一个基于CAD的项目。所使用的开发环境包括:C++用于算法实现;QT用于用户界面交互;VTK用于数据可视化。Cmake则用于管理项目的构建流程;而Emacs作为编译器,在初期主要用于文本编辑并支持配置和插件安装。VCM用来组织工程? Emacs编译器(最初是一个文本编辑器)需进行一些配置并安装一些插件(网上有许多教程)。SVN则承担版本控制的任务。值得注意的是,在个人项目中使用SVN可能显得有些多余。你不用担心因为你的某些修改导致工程无法运行……你可以花费大量的时间找出bug。如果你觉得错误很难找到……你可以恢复到之前某个稳定正确的版本上……非常省心

开发阶段采用的是Ubuntu系统。主要得益于Ubuntu生态系统中丰富的第三方库资源。完成软件源码下载后即可直接运行。我对Windows Visual Studio系列编辑器持有明显的偏见,因为其不同版本间动态链接库存在差异(令人头疼)。因此我更倾向于寻找一种全面兼容的操作系统环境下的工程管理工具、集成开发环境以及可扩展性优秀的第三方软件包。

听起来很简单, 但实际操作中确实有很多挑战. 在阶段性验收阶段时, 对方希望得到Windows系统的可执行程序, 所以我不得不被迫制作一个Windows版本的可执行文件. 关于Debug和Release两个版本的区别, 大家都比较清楚, 不用多说了. 现在就从这个项目的开始处理吧.

在编程的过程中遇到了诸多障碍,在寻求解决方案的过程中也走了不少弯路。为了尽快完成任务并避免类似问题再次发生,在开始项目之前我就对项目的实现细节有了大致了解。然而由于我对相关技术栈不熟悉,在项目初期选择了直接使用官方发布的 release 版本(使用 MinGW 进行配置)。随后我在 VTK 官方网站上寻找所需资源但未果。发现问题源于两个方面:一是所选版本与 VTK 不兼容二是缺少 64 位支持。通过查阅资料最终了解到 VTK 编译时需要自定义 Qt 库路径以便顺利构建应用程序

因此决定从新开始。这一次我没有对未来 Ku 报有任何期望,而是决定使用 MingW32-w64 编译器来独立构建 QT 和 VTK 库,以确保所有代码都在我的掌控之中,不依赖外部库的支持。首先,请下载并安装 MinGW 64 位版本,具体下载链接为: http://qt-project.org/downloads。我选择的是 QT 4.8.4 版本进行安装。完成下载后,你可以看到以下默认目录结构(假设已将软件安装到 D:\QT):

-system win32-msvc2005 目标系统
发布版本 关闭调试信息
不支持异常处理
开源版

-nomake tests不对tests目录进行编译节省时间

-nomake 不对examples目录进行Makefile生成
-static 创建静态版本的库文件
-fast 采用快速配置模式
-only 配置完成后仅生成与Qt相关的Makefile文件及其子目录
-other 余下的未包含在内Makefile则需使用qmake重新构建
/qt-sql-sqlite 支持SQLite数据库功能
plugin-sql-sqlite 提供SQLite数据库链接插件支持
/no-qt3support 不包含Qt3兼容库的编译配置
/qt-zlib 使用内置zlib实现压缩解压功能
如果不选择此选项 在系统环境中无法找到所需的压缩库资源 导致编译过程中出现错误。
我在实际操作中发现 如果最初未添加此选件 编译时会抛出相关错误提示 这是因为系统默认缺少必要的zlib相关依赖项。
因此 我参考了开源zlib项目找到了可靠的解决方案 并按照指导进行了正确配置。

zlib.zip

115网盘礼包接收地址:http://115.com/lb/5lbqelvs

115网盘礼包码:5lbqelvs)

或者:

http://www.kuaipan.cn/file/id_16050443109007451.htm

使用Qt实现的各种图形格式相关的插件集合...
选择性地禁用no-webkit选项能够显著提升程序运行效率,
若项目需求涉及WebKit,则应考虑启用此选项。

5.运行运行mingw32-make -j 4(-j 4是用来对编译加速的,加上之后速度快了很多)

当编译完成后,在lib目录下会生成一批.a文件(这些文件被我编译为静态库以防止在传递给对方程序时包含过多的动态链接库)。我的静态链接库已准备好下载,请访问以下链接:http://www.kuaipan.cn/file/id_1605044310900745.htm。该资源为64位版本。

编译完成后,随后进行VTK的编译工作。这项繁重的任务虽然不如QT易于操作,但其运行速度更快。

首先安装去Cmake观望下载cmake,然后安装

首先访问官方网站获取其源码:http://vtk.org/VTK/resources/software.html。我的安装版本为5.8.0。

Vtk-5.8.0.zip vtk 的源码

vtkdata-5.8.0.zip vtk例子所需要的数据

打开cmake 然后选择源码,和要安装的路径如下图:

然后configure弹出如下对话框:

需要你来选择编译器,在我的电脑上我已经安装并配置好了MingW编译器。它里面有多个可选的编译器可供使用,比如VS和Codeblock等其他工具也能够运行项目开发环境。CMake选项非常重要,请注意这些设置会直接影响到你后续VTK的一些核心功能是否能够正常工作。建议在决定使用哪个开发环境之前多做一些调研和测试工作;因为做出不好的选择很容易导致后续开发中出现各种问题和错误。以下展示了我已经设置好使用的CMake界面图示

还有下面的两个选项:

如果你刚才编译QT时未基于qt内置库实现zip解压功能,在此建议你采用自编写的工具来进行zip文件解压。我们已经提供了详细的下载链接供您参考。

在编译VTK的时候需要QT的一些可执行程序,所以你要确保Cmake找到了,

下面的选项很重要:

还存在一个非常重要的选项即VTK在Windows系统中的可视化实现有两种方案分别为1)采用DirectX、2)采用OpenGL。毫无疑问地选择了OpenGL这一方案主要是由于其跨平台特性而本文的核心目标就在于全面实现跨平台性。然而DirectX与此核心目标存在直接冲突必须彻底摒弃因此相关的头文件及库函数目录为空

对某些参数进行了调整后需重新配置,并随后执行make命令以生成make文件。接下来,请使用MingW32-make -j 4指令来进行编译。编译成功的VTK库可通过以下链接下载:http://www.kuaipan.cn/file/id_16050443109007448.htm

一旦这两个库成功地完成编译过程,则可以顺利地构建我的项目。无需深入探讨了,因为这一方法不具备通用性。今天的分享就此打住吧!相信这些信息能为您节省不少时间。时间就是金钱。

全部评论 (0)

还没有任何评论哟~