轉(zhuǎn)載自我的博客:在 VS2015 中使用 Qt4。
Qt4 對(duì) Visual Studio 的支持止于 VS2010[1],也就是說(shuō)你想要在 VS2015 使用 qt4,只能自己編譯。而自己編譯也是極其麻煩的,許多地方需要考慮 VS2015 所使用的編譯器支持的標(biāo)準(zhǔn),要處理許多代碼的沖突。所以網(wǎng)上根本找不到 VS2015 + qt4 的解決方案。
但我很喜歡 VS2015,不要錢的 Community 版本十分好使(再也不用盜版 VS2010、番茄助手了)!它自帶的代碼提示、補(bǔ)全很完善很贊。而且終于有了我以前吐槽過(guò)的 VS 沒有的【切換頭文件/源文件的功能】,見 愚蠢的 Visual Stuio。[2]而且我現(xiàn)在也沒時(shí)間把原來(lái)的代碼遷移到 qt5(我也不知道這工作量有多大)。所以我想,要是能在 VS2015 里使用 qt4,那該多好啊。
于是我搜到了 sandym/qt-patches: Patches to some release versioin of Qt I use,這人提供了 qt4 的補(bǔ)?。╬atch),這樣就能用 VS2015 編譯 qt4 源碼,生成必要的 *.lib、*.dll 文件了。
這樣,我編譯了 VS2015 能用的 qt4。
跑起來(lái)
這是一個(gè)精簡(jiǎn)了的 vs2015 能用的 qt4 打包:http://whudoc.qiniudn.com/2016/vs2015-qt4-playground.zip。雖然只有 14 MB,使用它你可以編譯運(yùn)行大多數(shù) qt4 工程代碼。
這個(gè)打包里還包含一個(gè) qt 樣例程序,很容易運(yùn)行起來(lái)。
使用方法如下:
- 解壓
vs2015-qt4-playground.zip; - 解壓里面的
qt4-vs2015x64.7z; - 把里面的
qt4-vs2015x64\bin目錄的完整路徑拷貝,粘貼到系統(tǒng)變量 PATH 的前面; - 用 cmake 編譯 vs2015 工程(選擇
Visual Studio 14 VS2015 WIN64); - 用 vs2015 打開工程,編譯 release 版本程序,然后運(yùn)行。
為了讓這個(gè) build 很小,我去掉了 debug 的部分,所以只能編譯 release。而且有些模塊被我去掉了。(比如 qt-libjpeg,所以連 jpeg 格式的圖片都無(wú)法加載。)
獲取一個(gè)更完整的 build
我還編譯了其它幾個(gè)不同的 qt4 vs2015x64 build。比如這個(gè):qt-4.8.7-vs2015-build1.7z,壓縮包 108 MB,解壓后 951 MB。跟上面的配置方法一樣。
編譯自己的 build
或許你想要更完整的支持,或許你想要更小的發(fā)行版??傊阆胱约壕幾g,可以參考我的 district10/qt4-vs2015x64: Qt4 & Visual Studio 2015 (vc14).。里面有源碼下載,以及 build 的步驟。
題外話
Qt5 有官方的 VS2015 的二進(jìn)制發(fā)行,使用起來(lái)也很簡(jiǎn)單。Qt5 和 CMake 一起使用也很容易,只要在 CMakeLists.txt 里加上搜索路徑即可,比如“C:/Qt/VS2015x64/Qt5.6.0/5.6/msvc2015_64”,具體可以看我的qt5-project。
Qt4 和 Qt5 也不會(huì)沖突。


-
Qt 官方的 release 里,只有對(duì) vs2008 和 vs2010 的支持。Qt4 最后一個(gè) release 是 qt-4.8.7,那時(shí)候 vs2015 還沒出來(lái)吧。 ?
-
而且,怎么說(shuō)呢,VS 原本沒有這個(gè)功能是可以理解的。因?yàn)轭^文件的聲明和 cpp 的實(shí)現(xiàn)本來(lái)就可以是隨意的。以我 camke-templates 里的functions.h 為例,它的實(shí)現(xiàn)就分布在 cubic.c、square.c、power4.c、power5.c。這樣的情況下,Qt creator 那個(gè)【切換頭文件/源文件(F4)】其實(shí)是不嚴(yán)謹(jǐn)?shù)摹6?VS 的【Go to Definition(F12)】則很“正確”?,F(xiàn)在 VS2015 有了【Toggle Header / Code File(Ctrl+K,Ctrl+O)】,這個(gè)表達(dá)是極為嚴(yán)謹(jǐn)且精準(zhǔn)的。(我以為 VS2015 真的可以“智能”地跳轉(zhuǎn),結(jié)果發(fā)現(xiàn)居然這功能居然沒反應(yīng)。不知道是不是自己的電腦太慢,或者是設(shè)置得不對(duì)。就我這樣?) ?