VS編譯Qt原始碼
Qt常用的編譯方式有兩種,一種是使用mingw編譯器,另外一種是使用vs編譯器進行編譯,本文主要介紹使用vs編譯器進行編譯。
1、編譯選項
以下編譯選項為常用編譯選項,可新增在編譯命令中,都是可選:
1)-prefix <dir> :指定安裝目錄預設在;
2)-hostprefix [dir] :指定可擴充套件的工具庫安裝路徑,預設當前目錄;
3) -prefix-install :指定QT的本地安裝;
4)-bindir <dir> :指定可執行檔案路徑 <dir>(預設 PREFIX/bin下);
5)-libdir <dir> :
6)-docdir <dir> : 指定文件路徑 <dir>(預設 PREFIX/doc);
7)-headerdir <dir> : 指定標頭檔案路徑 <dir>(預設 PREFIX/include);
8)-plugindir <dir> : 指定外掛路徑 <dir> (預設 PREFIX/plugins);
9)-datadir <dir> : 指定QT要使用到的一些資料檔案所在路徑 <dir> (預設 PREFIX);
10)-translationdir <dir> :指定
11)-sysconfdir <dir> :指定QT的設定檔案路徑 <dir>(預設 PREFIX/etc/settings);
12)-examplesdir <dir> : 指定例項檔案, <dir>(預設 PREFIX/examples)
13)-demosdir <dir> : 指定demos的安裝路徑 <dir> (預設 PREFIX/demos);
14)-buildkey <key> : 通過指定的
15)-release :此選項在編譯過程QT會對程式進行優化,在釋出軟體的時候應該用此選項,是預設選項;
16)-debug :加上此選項編譯程式QT不會做出優化,往往在開發過程使用此選項;
17)-debug-and-release : 編譯兩個版本;
18)-developer-build : 編譯Qt的開發商和連線選項(包括自動測試出口的Qt);
19)-opensource :以開源版本釋出程式;
20)-commercial :以商業版本釋出程式;
21)-shared : 建立和使用共享Qt庫;
22)-static : 建立和使用靜態的Qt庫;
23)-no-fast : 使用通常的Makefile來編譯,是預設選項;
24)-fast : 快速編譯,除了封裝必要的庫,部分步驟省略或者用快速的方法處理;
25)-no-largefile : 禁用大檔案支援;
26)-largefile :支援訪問大於4GB的檔案;
27)-no-exceptions : 禁用編譯器本身對異常的處理;
28)-exceptions : 啟用編譯器本身對異常的處理;
29)-no-accessibility 、-accessibility :禁用/啟用無障礙支援;
30)-no-stl、-stl :禁用/啟用STL支援;
31)-no-sql-<driver> : 禁用SQL;
32)-qt-sql-<driver> : 根據需求啟用SQL外掛(預設全部關閉);
33)-plugin-sql-<driver> :禁用/啟用/啟用外掛 對SQL的支援;
34)-system-sqlite : 啟用支援sqlite也可用-qt-sqlite;
35)-no-qt3support 、-qt3support :禁用/啟用qt3支援模組;
36)-no-xmlpatterns 、-xmlpatterns : 禁用/啟用xmlpatterns模組;
37)-no-phonon 、-phonon : 禁用/啟用Phonon模組(可以理解為聲音控制模組);
38)-no-phonon-backend、-phonon-backend:禁用/啟用phonon-backend模組;
39)-no-svg、-svg : 禁用/啟用svg模組;
40)-no-webkit、-webkit : 禁用/啟用webkit模組(訪問網路模組);
41)-no-scripttools 、-scripttools : 禁用/啟用scripttools模組;
42)-platform target : x86平臺指定模組 (qws/linux-x86-g++);
43)-qtnamespace <name> :指定所有庫程式碼路徑;
44)-qtlibinfix <infix> :重新命名所有.so庫檔案到指定路徑;
45)-qt-zlib :zlib依賴包;
46)-no-gif 、-qt-gif :gif圖片支援包;
47)-no-libtiff 、-qt-libtiff :tiff支援外掛;
48)-no-libpng 、-qt-libpng :png圖片支援外掛;
49)-no-libmng 、-qt-libmng : mng支援外掛;
50)-no-libjpeg 、-qt-libjpeg :jpeg圖片支援外掛;
51)-no-openssl、-openssl :openssl支援外掛;
52)-make <part>、-nomake <part> :選擇是否編譯某些無關緊要的子模組;
53)-continue :忽略錯誤的編譯;
54)-verbose, -v :顯示每個步驟的詳細資訊;
55)-silent :安靜的編譯省略資訊回顯;
56)-no-optimized-qmake、-optimized-qmake :禁用/開啟qmake的優化作用;
57) -no-nis 、-nis :禁用/開啟NIS的支援;
58)-no-cups 、-cups :禁用/開啟對CUPS的支援;
59)-no-iconv 、-iconv :禁用/開啟對iconv的支援;
60)-no-pch 、-pch :禁用/開啟是否使用前處理器標頭檔案;
61)-no-dbus、-dbus :禁用/開啟對QTdbus模組的編譯;
62)-reduce-relocations :減少因為連結優化而導致的而外的庫檔案重置
63)-no-separate-debug-info :不將除錯資訊放在一個檔案內;
64)-separate-debug-info : 將除錯資訊放在一個檔案內;
65)-no-opengl 、-opengl :禁用/開啟對opengl的支援;
66)-no-glib 、-glib : 禁用/啟用對glib的支援。
2、編譯步驟
進行解壓,注意解壓路徑不要含有空格或中文,我把它解壓到了D:\Qt5.1src裡,準備把編譯好的放在D:\Qt5.1裡;
2)開啟VS編譯控制檯,進入解壓的地方,比如我的: cd D:\Qt5.1src;
3)鍵入命令configure -prefix D:\Qt5.1 -debug-and-release -static -opensource -no-qt3support -no-dbus -no-phonon -no-webkit -qt-gif -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg;
注:編譯選項參照上面。
4)configure可能要花幾分鐘時間,成功後再輸入nmake開始編譯,編譯會花去大概1小時左右;
5)輸入nmake install,進行編譯安裝。
3、簡單測試
利用pro檔案進行專案組織,連結相應檔案和Qt的庫,手動編寫專案原始碼,使用QMAKE命令轉成vs的解決方案,進行測試,簡單程式碼如下:
pro檔案:
QT += core
QT -= gui
TARGET = Test
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
main.cpp檔案
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}
編譯的為控制檯應用程式,如果可以正常執行即為編譯成功。