转载自我的博客:在 VS2015 中使用 Qt4。
Qt4 对 Visual Studio 的支持止于 VS2010[1],也就是说你想要在 VS2015 使用 qt4,只能自己编译。而自己编译也是极其麻烦的,许多地方需要考虑 VS2015 所使用的编译器支持的标准,要处理许多代码的冲突。所以网上根本找不到 VS2015 + qt4 的解决方案。
但我很喜欢 VS2015,不要钱的 Community 版本十分好使(再也不用盗版 VS2010、番茄助手了)!它自带的代码提示、补全很完善很赞。而且终于有了我以前吐槽过的 VS 没有的【切换头文件/源文件的功能】,见 愚蠢的 Visual Stuio。[2]而且我现在也没时间把原来的代码迁移到 qt5(我也不知道这工作量有多大)。所以我想,要是能在 VS2015 里使用 qt4,那该多好啊。
于是我搜到了 sandym/qt-patches: Patches to some release versioin of Qt I use,这人提供了 qt4 的补丁(patch),这样就能用 VS2015 编译 qt4 源码,生成必要的 *.lib
、*.dll
文件了。
这样,我编译了 VS2015 能用的 qt4。
跑起来
这是一个精简了的 vs2015 能用的 qt4 打包:http://whudoc.qiniudn.com/2016/vs2015-qt4-playground.zip。虽然只有 14 MB,使用它你可以编译运行大多数 qt4 工程代码。
这个打包里还包含一个 qt 样例程序,很容易运行起来。
使用方法如下:
- 解压
vs2015-qt4-playground.zip
; - 解压里面的
qt4-vs2015x64.7z
; - 把里面的
qt4-vs2015x64\bin
目录的完整路径拷贝,粘贴到系统变量 PATH 的前面; - 用 cmake 编译 vs2015 工程(选择
Visual Studio 14 VS2015 WIN64
); - 用 vs2015 打开工程,编译 release 版本程序,然后运行。
为了让这个 build 很小,我去掉了 debug 的部分,所以只能编译 release。而且有些模块被我去掉了。(比如 qt-libjpeg
,所以连 jpeg 格式的图片都无法加载。)
获取一个更完整的 build
我还编译了其它几个不同的 qt4 vs2015x64 build。比如这个:qt-4.8.7-vs2015-build1.7z,压缩包 108 MB,解压后 951 MB。跟上面的配置方法一样。
编译自己的 build
或许你想要更完整的支持,或许你想要更小的发行版。总之你想自己编译,可以参考我的 district10/qt4-vs2015x64: Qt4 & Visual Studio 2015 (vc14).。里面有源码下载,以及 build 的步骤。
题外话
Qt5 有官方的 VS2015 的二进制发行,使用起来也很简单。Qt5 和 CMake 一起使用也很容易,只要在 CMakeLists.txt 里加上搜索路径即可,比如“C:/Qt/VS2015x64/Qt5.6.0/5.6/msvc2015_64”,具体可以看我的qt5-project。
Qt4 和 Qt5 也不会冲突。
-
Qt 官方的 release 里,只有对 vs2008 和 vs2010 的支持。Qt4 最后一个 release 是 qt-4.8.7,那时候 vs2015 还没出来吧。 ↩
-
而且,怎么说呢,VS 原本没有这个功能是可以理解的。因为头文件的声明和 cpp 的实现本来就可以是随意的。以我 camke-templates 里的functions.h 为例,它的实现就分布在 cubic.c、square.c、power4.c、power5.c。这样的情况下,Qt creator 那个【切换头文件/源文件(F4)】其实是不严谨的。而 VS 的【Go to Definition(F12)】则很“正确”。现在 VS2015 有了【Toggle Header / Code File(Ctrl+K,Ctrl+O)】,这个表达是极为严谨且精准的。(我以为 VS2015 真的可以“智能”地跳转,结果发现居然这功能居然没反应。不知道是不是自己的电脑太慢,或者是设置得不对。就我这样?) ↩
网友评论