windows下Qt的开发人员常用vs+Qt插件进行Qt桌面程序的开发。因为Qt是跨平台的,所以开发完成后如果需要把程序移植到linux下运行,只要把vs的项目工程放到linux下,编译即可。下面介绍把vs+Qt的工程从windows平台移植到linux下的方法。演示程序的windows开发环境是win7+vs2015+Qt5.9(Qt安装包为qt-opensource-windows-x86-5.9.0.exe,Qt插件为qt-vs-tools-msvc2015-2.1.1.vsix)。Linux版本为ubuntu14.04,安装在vmware11下。ubuntu下安装的Qt版本为Qt5.9(Qt安装包为qt-opensource-linux-x64-5.9.0.run,这里最好保证linux和windows下的Qt版本一致,否则可能编译会出现问题)。
演示程序在windows下运行效果如下图所示:
将vs+Qt的工程从windows平台移植到linux下
首先把vs的工程拷贝到ubuntu里面(可以用虚拟机的共享文件夹功能),把工程里面的目录Debug、GeneratedFiles、Release、Win32、x64和文件...user、...sln、...vcxproj、......filters删掉。这里根据vs版本的不同删除的文件和目录也可能不同。只要保留.h、.cpp、.qrc(没有这个文件编译出来的Qt项目会显示不了图片)、.ui文件和Resources目录就可以了。
然后进入工程目录,设置qmake的环境变量(默认在linux里面安装完Qt5.9是找不到qmake的,执行qmake会提示“could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake':No such file or directory”,所以得设置环境变量),执行命令:
export PATH=/opt/Qt5.9.0/5.9/gcc_64/bin:$PATH
(根据Qt安装路径不同命令也可能不同,这里我Qt的安装目录是/opt/Qt5.9.0,所以执行这个命令。用这种方式设置环境变量的好处是:只要关闭终端,环境变量就失效了,所以可以在linux下安装多个版本的Qt,设置多个版本的qmake)
接下来执行命令:
qmake -project QT+=widgets
(这里如果是Qt5的话不能直接执行命令qmake-project,否则接下来make的时候会报错:fatal error:uixxxxx.h:没有那个文件或目录。Qt4可以直接执行命令qmake -project。执行完这一步目录下会生成文件)。
然后执行命令:
qmake
执行完这一步在目录下会生出Makefile文件
然后执行命令:
make
执行完这一步在目录下会生成可执行文件,运行即可。演示程序程序的运行效果如下:
将vs+Qt的工程从windows平台移植到linux下
PS:接下来分享一些我移植时踩到的坑。在刚开始移植的时候,我在vs生成了.pro和.pri配置文件,然后一起拷贝进ubuntu里面。用QtCreator通过.pro文件打开工程,结果编译的时候发生错误如下图所示:
将vs+Qt的工程从windows平台移植到linux下
将vs+Qt的工程从windows平台移植到linux下
不使用QtCreator,使用命令行编译会也一样遇到这个错误如下图所示:
将vs+Qt的工程从windows平台移植到linux下
根本原因是通过vs生成的pro配置文件是有问题的,虽然可以修改,但是比较麻烦,特别是对于新手看不懂pro内容的同学来说。所以如果是想要把vs的Qt项目移植到linux下,最好不要通过vs生成pro文件。只有当拷贝到linux下时才通过qmake -project命令生成pro文件。