对于使用VS+Qt开发方式的小伙伴,如果需要跨平台开发,即转换成Qt Creator工程文件*.pro,拷贝代码到linux上编译,
这里使用的是VS2017+qt-opensource-windows-x86-5.13.0.exe。
1、从VS中导出Qt Creator工程
(1)我们先建立一个测试工程,然后在工程名称上右键,选择“Qt”->“Create Basic .pro File...”。
(3)默认保存pri、pro文件到源码所在目录,选择“保存”
(4)转换工程,选择“Convert Project to QMake Generated Project”,貌似并没有新生成什么?先照做吧。
2、使用Qt Creator编译工程
(1)ui_xxx.h路径不一致导致编译报错(坑1)
这转换不够智能啊,这么简单的demo,直接编译报错,要是更复杂,那工程转换也是一个费神的事儿。
研究了下,发现Qt Creator编译生成的ui_xxx.h与VS编译生成的ui_xxx.h路径不一样。Qt Creator和VS会各自到自己路径下去找ui_xxx.h。
而ui_xxx.h是由编译xxx.ui文件得到的中间文件,会在xxx.cpp中被包含,参与编译。所以你要转换工程,
就只能将VS生成的ui_xxx.h拷贝到转换后的Creator路径下,Creator工程才能编译过。
如果xxx.ui文件发生修改,VS生成了新的ui_xxx.h,由于路径与Creator路径不一致,所以覆盖不到旧版,Creator工程下依然使用的旧版本参与编译。
除非可以设置2者路径为一致,否则ui文件一修改就需要拷贝。。。
这是编译mainwindow.ui生成ui_mainwindow.h所在目录repos\build-untitled-Desktop_Qt_5_13_0_MSVC2017_64bit-Debug
这是VS新建工程目录repos\QtGuiApplication1\QtGuiApplication1
这是编译ui得到的ui_QtGuiApplication1.h文件目录repos\QtGuiApplication1\QtGuiApplication1\x64\Debug\uic
将VS生成ui_QtGuiApplication1.h文件拷贝到repos\QtGuiApplication1\QtGuiApplication1
(2)VS生成pro文件不完善,导致链接错误(坑2)
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
3、关于作者的一点看法
如果你开发的程序只管windows上跑,也不关心是否需要使用Qt Creator打开,那么推荐你使用VS+Qt方式进行开发,VS毕竟速度和调试功能完爆
如果你需要考虑跨平台,那么最好不要使用VS+Qt这种方式,工程转换路径、库、配置有很多麻烦的地方。
推荐使用Qt Creator编码+MSVC编译的方式,为什么不推荐使用MinGW编译,因为MSVC在编译速度和运行速度上都完爆MinGW。
你自己分别使用MSVC和MinGW编译和运行程序试一下就知道了。
另外这种方式不存在工程转换的问题,可以更好的支持跨平台开发。
若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!
同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。