Qt5學習筆記——64位 or 32位


 

      在重新采用Qt開發界面之前,碰到的第一個問題就是操作系統平台的問題。現在項目組已經同意采用了X64平台,於是我將之前用Qt4.8.2編寫的程序在X64的環境下進行編譯,發現報錯fatal error LNK1112: 模塊計算機類型“x64”與目標計算機類型“X86”沖突。上網搜尋資料發現,在Windows平台下,Qt只有32位的安裝文件,要編譯64位的Qt程序,必須將Qt的源碼進行64位編譯並生成相應的bin、include、lib文件夾。又經過一番資料搜尋后,我終於發現了目前Qt項目的下載頁面:http://qt-project.org/downloads

 

    在最下面一行中,居然有Windows64位的Qt安裝程序,一陣大喜之后,后面的幾個字母頓時將我的喜悅都澆沒了。我嘞個去,居然是VS2012的,上面的安裝文件都是在VS2010的環境下,為什么要弄個VS2012的呢?真搞不懂Qt在想什么?開來只有自己下載Qt的源碼進行64位編譯了。

 

    我的編譯過程主要參照博客http://blog.csdn.net/ztz0223/article/details/8917182,只進行了動態編譯,主要步驟和參照的那篇博客一樣:

1、下載源代碼:

qt-everywhere-opensource-src-5.0.2.zip

2、解壓到E:\Qt_compl,重命名文件夾為qt-src-5.0.2

3、安裝依賴的工具,安裝的時候都要注意添加到系統path,會有對話框彈出的時候勾選即可:

1. Perl 5.8 or later

x86 http://www.activestate.com/activeperl/downloads/thank-you?dl=http://downloads.activestate.com/ActivePerl/releases/5.16.3.1603/ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi 

amd64 http://www.activestate.com/activeperl/downloads/thank-you?dl=http://downloads.activestate.com/ActivePerl/releases/5.16.3.1603/ActivePerl-5.16.3.1603-MSWin32-x64-296746.msi 

2. Python 2.7 or later

x86 http://www.activestate.com/activepython/downloads/thank-you?dl=http://downloads.activestate.com/ActivePython/releases/2.7.2.5/ActivePython-2.7.2.5-win32-x86.msi 

amd64 http://www.activestate.com/activepython/downloads/thank-you?dl=http://downloads.activestate.com/ActivePython/releases/2.7.2.5/ActivePython-2.7.2.5-win64-x64.msi

3. Ruby

amd64 http://rubyforge.org/frs/download.php/76806/rubyinstaller-2.0.0-p0-x64.exe 

4、安裝ICU,http://download.qt-project.org/development_releases/prebuilt/icu/src/icu4c-51_1-src.zip,解壓然后,我的路徑是:E:\QT Dev\安裝包\5.0\icu,然后用vs2012打開文件E:\QT Dev\安裝包\5.0\icu\source\allinone\allinone.sln,然后分別以debug和release模式編譯一次。然后把E:\QT Dev\安裝包\5.0\icu文件夾拷貝到C:\icu下面去,僅僅保留bin;include;lib三個文件夾。其他都刪除。然后添加系統環境變量,我這里是添加到administrator的用戶環境變量:

  1. ICU_DIR =C:\icu  
  2. include= %ICU_DIR%\include  
  3. lib=%ICU_DIR%\lib  
  4. Path=%ICU_DIR%\bin 

    注意在第四步中,Path中添加的是%ICU_DIR%\bin,而不是新建一個Path,因為原本就已經有了一個Path(我就犯了這個錯誤^_^),同時將這些變量添加到用戶變量中,而不是環境變量中!

5、開始編譯:

1、開啟msvc 2012的cmd進入E:\Qt_compl\qt-src-5.0.2,開始配置,需要指定-opengl desktop,因為設計到一個把opengl轉化為d3d的庫,這么配置就是不使用這塊了:

  1. E:\Qt_compl\qt-src-5.0.2>configure -prefix c:\qt -debug-and-release -platform win32-msvc2012 -c++11  -icu -opengl desktop -qt-sql-sqlite -qt-zlib -qt-style-windowsvista -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tests -mp  

    置於configure -prefix c:\qt -debug-and-release -platform win32-msvc2012 -c++11  -icu -opengl desktop -qt-sql-sqlite -qt-zlib -qt-style-windowsvista -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tests -mp 這句話代表的含義,可以輸入configure -help查看每個模塊的定義,這句話主要是用來設置需要編譯哪些模塊。其中c:\qt為編譯之后的目錄,可以自定義。我是采用VS2010進行64位的編譯,因此上面一句話應該改為:

configure -prefix D:\Qt\5.0.2 -debug-and-release -platform win32-msvc2010 -c++11  -icu -opengl desktop -qt-sql-sqlite -qt-zlib -qt-style-windowsvista -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tests -mp  

    【更多關於configure的設置,可以參考博客:http://www.cnblogs.com/liff-engineer/archive/2013/05/20/3088740.html

    之后繼續進行下面的步驟……

2、編譯結束的時候,輸入nmake install,就會講安裝的東西復制到c:\qt,但是會提示報錯:

  1. 已復制         1 個文件。  
  2.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\russian.qph c:\qt\phrasebooks  
  3. 已復制         1 個文件。  
  4.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\spanish.qph c:\qt\phrasebooks  
  5. 已復制         1 個文件。  
  6.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\swedish.qph c:\qt\phrasebooks  
  7. 已復制         1 個文件。  
  8.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\lib\cmake\Qt5LinguistTools\Qt5LinguistToolsConfig.cmake c:\qt\lib\cmake\Qt5LinguistTools  
  9. 已復制         1 個文件。  
  10.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\lib\cmake\Qt5LinguistTools\Qt5LinguistToolsMacros.cmake c:\qt\lib\cmake\Qt5LinguistTools  
  11. 已復制         1 個文件。  
  12.         cd qtwebkit-examples-and-demos\ && ( if not exist Makefile E:\Qt_compl\qt-src-5.0.2\qtbase\bin\qmake E:\Qt_compl\qt-src-5.0.2\qtwebkit-examples-and-demos\qtwebkit-examples-and-demos.pro -o Makefile ) && "D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\nmake.exe  
  13. " -f Makefile install  
  14. Microsoft (R) Program Maintenance Utility Version 11.00.50727.1  
  15. Copyright (C) Microsoft Corporation.  All rights reserved.  
  16. NMAKE : fatal error U1073: don't know how to make 'install'  
  17. Stop.  
  18. NMAKE : fatal error U1077: 'cd' : return code '0x2'  
  19. Stop.  
  20. E:\Qt_compl\qt-src-5.0.2>  

3、進入E:\Qt_compl\qt-src-5.0.2,把這個文件夾下面的makefile給修改了:

  1. install_subtargets: module-qtbase-install_subtargets module-qtsvg-install_subtargets module-qtxmlpatterns-install_subtargets module-qtjsbackend-install_subtargets module-qtdeclarative-install_subtargets module-qtmultimedia-install_subtargets module-qtactiveqt-install_subtargets module-qtwebkit-install_subtargets module-qttools-install_subtargets module-qtwebkit-examples-and-demos-install_subtargets module-qtimageformats-install_subtargets module-qtgraphicaleffects-install_subtargets module-qtscript-install_subtargets module-qtquick1-install_subtargets module-qttranslations-install_subtargets module-qtdoc-install_subtargets FORCE  
  2.   
  3. 去掉module-qtwebkit-examples-and-demos-install_subtargets   

4、再執行nmake install

整個編譯過程就OK了。

 6、編譯和安裝文檔,如果不做這一步,那么C:\Qt\bin,目錄下面的assistance.exe將是沒有文檔索引的

1、編譯文檔:

  1. E:\Qt_compl\qt-src-5.0.2>nmake docs  

2、安裝文檔:

  1. E:\Qt_compl\qt-src-5.0.2>nmake install_docs  

    整個編譯過程大概持續兩個小時,汗!

    到此,64位的Qt5.0.2動態編譯就全部結束了,在我的Qt的安裝目錄下,生成了938M的文件,下面來試試能不能編譯64位的Qt程序……

    等一下,還得把qt-vs-addin-1.2.1-opensource.exe安裝一下~^_^

 

    進入VS2010后,在Qt5中點擊Qt Options,在Qt Versions選項卡中添加Qt5.0.2的版本,我的是這樣子的:

    新建了一個Qt程序,進行64位編譯之后發現,報了如下錯誤:

There's no Qt version assigned to this project for platform Win32.

Please use the 'change Qt version' feature and choose a valid Qt version for this platform.

    Oh My God!難道我花了兩個小時編譯的64位Qt不能用!還是不死心,最后又是通過搜尋,發現了解決的方法:還是在Qt5選項中,選擇Qt Project Settings,在Version那一欄中,指定為5.0.2,我的頁面如下:

    再次編譯,發現已經可以成功編譯為64位的Debug和Release版本,OK好好享受吧!~^_^

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM