由于Qt官方發布的Qt 5.6.1二進制安裝包沒有對應VS2010版本的,而我的電腦上只安裝了VS2010,因此只能自己編譯。
本文記錄本人的編譯安裝過程,以及其中遇到的一些問題。
本文使用VS2010 32位編譯Qt 5.6.1。
1. 下載Qt源代碼
Qt源代碼下載地址:https://www.qt.io/download-open-source/
或直接到下載匯總目錄:http://download.qt.io/archive/
其中,Qt 5.6.1的下載目錄為:http://download.qt.io/archive/qt/5.6/5.6.1/
見下圖:
從上圖中可以看到,Qt 5.6.1官方提供的VS版本只有VS2013和VS2015。
由于我的電腦上只有VS2010(至于原因,對我來說VS2010是用得最久的,并且越高的版本的VS占用的空間越大,
微軟的東西實在龐大得嚇人,所以一直沒有更換更高版本的VS),所以只能下載Qt源碼自己編譯。
Qt 5.6.1源碼在上圖中的single
目錄中,見下圖:
上圖中的幾個壓縮包的內容是一樣的,但是.7z
格式的文件是最小的,所以就下載.7z
格式的就行啦(前提是你的電腦能解壓.7z
格式的壓縮包)。
2. 將Qt源代碼壓縮包解壓
下載后得到qt-everywhere-opensource-src-5.6.1.7z
文件。
然后將此壓縮包解壓,此時需要注意解壓到的目錄位置:由于編譯(即執行nmake
或jom
)后得到的文件(包括.prl
、.dll
等)會攜帶源代碼路徑信息,
所以最好一開始就把源代碼放在一個對的位置,并且編譯后不要移動或刪除。
(注:但執行nmake install
或jom install
后源代碼路徑信息就被去掉了,所以上面一段可以不必在意。)
我之前曾特意為此在虛擬機中測試安裝了qt-opensource-windows-x86-msvc2015-5.6.1.exe
,安裝后安裝目錄的結構如下:
D:\ProgramFiles\Qt\5.6.1
├─5.6
│ ├─msvc2015
│ └─Src
├─Docs
├─Examples
├─Tools
└─……(其他不重要的目錄或文件)
因此,我直接將qt-everywhere-opensource-src-5.6.1.7z
解壓到D:\ProgramFiles\Qt\5.6.1\5.6
目錄下,
然后將得到的文件夾qt-everywhere-opensource-src-5.6.1
重命名為Src
。
3. 安裝依賴環境
根據Qt 5.6.1源代碼中的README
可以知道,編譯Qt 5.6.1之前需要安裝幾個環境:
- Perl version 5.12 or later [http://www.activestate.com/activeperl/]
- Python version 2.7 or later [http://www.activestate.com/activepython/]
- Ruby version 1.9.3 or later [http://rubyinstaller.org/]
- ICU
Qt 5 can make use of the ICU libraries providing Unicode and Globalization
support (see http://site.icu-project.org/). They are required for building QtWebKit.
On Windows, they need to be manually installed and the "include" and "lib"
folders of the ICU installation must be appended to the INCLUDE and LIB
environment variables after calling the Windows SDK setup script.
The "bin" folder of the ICU installation should be appended to the PATH
environment variable in order to for the DLLs to be found at run-time.
- DirectX SDK (DirectX 9 or 11)
For Qt Quick 2 to work, a graphics driver that provides OpenGL 2.1 or higher is required.
The default driver from Windows is OpenGL 1.1. Qt includes a version of the ANGLE project
which is included from the Windows Qt installers.
ANGLE implements the OpenGL ES 2.0 API on top of DirectX 11 or DirectX 9.
ANGLE requires that the DirectX SDK is installed when building Qt.
于是,我安裝了如下幾項:
- ActivePerl 5.22.1.2201
- Python 2.7.11
- Ruby 2.2.4
- icu4c 54.1
- DXSDK_Jun10
(注:我將ICU安裝壓縮包icu4c-54_1-Win32-msvc10.zip
解壓到D:\ProgramFiles\ICU
目錄下,
并重命名為icu4c-54_1-Win32-msvc10
,即得到D:\ProgramFiles\ICU\icu4c-54_1-Win32-msvc10
。下面會用到這個目錄。)
4. 開始編譯安裝
在D:\ProgramFiles\Qt\5.6.1\5.6\Src
目錄中新建一個批處理文件,命名為my_build_vs2010_x86.bat
,用文本編輯器打開之,編輯內容如下:
ECHO on
ECHO 本批處理腳本參考:http://doc.qt.io/qt-5/windows-building.html
ECHO 和 http://www.myext.cn/other/a_30787.html
ECHO;
ECHO 設置Microsoft Visual Studio 2010 x86環境...
CALL "D:\ProgramFiles\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
ECHO;
ECHO 設置Qt源代碼路徑...
SET QTSRC_DIR=D:\ProgramFiles\Qt\5.6.1\5.6\Src
SET PATH=%QTSRC_DIR%\qtbase\bin;%QTSRC_DIR%\gnuwin32\bin;%PATH%
SET QMAKESPEC=win32-msvc2010
ECHO;
ECHO 設置ICU路徑...
SET INCLUDE=D:\ProgramFiles\ICU\icu4c-54_1-Win32-msvc10\include;%INCLUDE%
SET LIB=D:\ProgramFiles\ICU\icu4c-54_1-Win32-msvc10\lib;%LIB%
SET PATH=D:\ProgramFiles\ICU\icu4c-54_1-Win32-msvc10\bin;%PATH%
ECHO;
ECHO 按任意鍵,進行configure...
@PAUSE>NUL
ECHO 開始configure...
CALL configure -prefix %QTSRC_DIR%\..\msvc2010_x86 -opensource -confirm-license -platform win32-msvc2010 -debug-and-release -nomake tests -nomake examples -opengl dynamic -mp
ECHO;
ECHO 按任意鍵,開始make...
@PAUSE>NUL
CALL jom
ECHO;
ECHO 按任意鍵,開始install...
@PAUSE>NUL
CALL jom install
REM 重新配置和編譯請使用
REM nmake distclean 或jom clean
(注:上面腳本中的編譯步驟使用了Qt Creator的jom工具,如果還未安裝Qt Creator,則需要將上面腳本中的jom
替換成nmake
。)
上面這個腳本里面已經寫了較全面的注釋,在此就不一一解釋了。
然后再在此目錄下新建一個批處理文件,命名為my_build_vs2010_x86_and_log.bat
,用文本編輯器打開之,編輯內容如下:
@CALL %SystemRoot%\system32\cmd.exe /E:ON /V:ON /k "my_build_vs2010_x86.bat" 2>&1 |mtee/d/t/u/+ my_build_vs2010_x86.log
其中的mtee
是一個用于Windows批處理輸出重定向的一個小工具,可以到此下載,
下載之后安裝,把mtee.exe
所在路徑添加到系統Path
環境變量中就可以了。
使用mtee
是為了在命令行窗口顯示輸出的同時將過程中的所有輸出記錄到文件。
然后雙擊運行my_build_vs2010_x86_and_log.bat
,即可自動完成Qt 5.6.1的編譯和安裝。
運行結束后得到log文件my_build_vs2010_x86.log
即為過程中的所有輸出的記錄。
5. 后續處理
編譯安裝完成之后,可以直接把源代碼目錄Src
刪除。
如果想保留源代碼,可以在源代碼目錄執行jom clean
或nmake distclean
(因為編譯過程在源代碼目錄產生了大量的中間文件),
或者可以將源代碼目錄刪除后重新把之前下載的源代碼壓縮包解壓到相同位置。
最后就是在Qt Creator中配置Qt路徑了,比較簡單,就不再贅述了。
至此,Qt 5.6.1在VS2010平臺下的編譯全部完成。