在 VS2015 中使用 Qt4

轉(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)。

使用方法如下:

  1. 解壓 vs2015-qt4-playground.zip;
  2. 解壓里面的 qt4-vs2015x64.7z;
  3. 把里面的 qt4-vs2015x64\bin 目錄的完整路徑拷貝,粘貼到系統(tǒng)變量 PATH 的前面;
  4. 用 cmake 編譯 vs2015 工程(選擇 Visual Studio 14 VS2015 WIN64);
  5. 用 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ì)沖突。

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 里,只有對(duì) vs2008 和 vs2010 的支持。Qt4 最后一個(gè) release 是 qt-4.8.7,那時(shí)候 vs2015 還沒出來(lái)吧。 ?

  2. 而且,怎么說(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ì)。就我這樣?) ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容