在 VS2015 中使用 Qt4

转载自我的博客:在 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 样例程序,很容易运行起来。

使用方法如下:

  1. 解压 vs2015-qt4-playground.zip
  2. 解压里面的 qt4-vs2015x64.7z
  3. 把里面的 qt4-vs2015x64\bin 目录的完整路径拷贝,粘贴到系统变量 PATH 的前面;
  4. 用 cmake 编译 vs2015 工程(选择 Visual Studio 14 VS2015 WIN64);
  5. 用 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 也不会冲突。

qt4 + vs2015,代码:<https://github.com/district10/cmake-templates/tree/master/qt4-project>
qt5 + vs2015,代码:<https://github.com/district10/cmake-templates/tree/master/qt5-project>

  1. Qt 官方的 release 里,只有对 vs2008 和 vs2010 的支持。Qt4 最后一个 release 是 qt-4.8.7,那时候 vs2015 还没出来吧。

  2. 而且,怎么说呢,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 真的可以“智能”地跳转,结果发现居然这功能居然没反应。不知道是不是自己的电脑太慢,或者是设置得不对。就我这样?)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容