使用qt的時候,我們經常會對pro進行一系列繁瑣的配置,為方便大家理解、查詢,現將常用的配置進行整理。
更多參考
以「#」開始,到這一行結束。
快捷鍵:ctrl + /
指定編譯器選項和專案配置,值由qmake內部識別並具有特殊意義。
以下配置值控制編譯標誌:
選項說明
release
專案以release模式構建。如果也指定了debug,那麼最後乙個生效。
debug
專案以debug模式構建。
debug_and_release
專案準備以debug和release兩種模式構建。
debug_and_release_target
此選項預設設定。如果也指定了debug_and_release,最終的debug和release構建在不同的目錄。
build_all
如果指定了debug_and_release,預設情況下,該專案會構建為debug和release模式。
autogen_precompile_source
自動生成乙個.cpp檔案,包含在.pro中指定的預編譯標頭檔案。
ordered
使用subdirs模板時,此選項指定應該按照目錄列表的順序處理它們。
precompile_header
可以在專案中使用預編譯標頭檔案的支援。
warn_on
編譯器應該輸出盡可能多的警告。如果也指定了warn_off,最後乙個生效。
warn_off
編譯器應該輸出盡可能少的警告。
exceptions
啟用異常支援。預設設定。
exceptions_off
禁用異常支援。
rtti
啟用rtti支援。預設情況下,使用編譯器預設。
rtti_off
禁用rtti支援。預設情況下,使用編譯器預設。
stl啟用stl支援。預設情況下,使用編譯器預設。
stl_off
禁用stl支援。預設情況下,使用編譯器預設。
thread
啟用執行緒支援。當config包括qt時啟用,這是預設設定。
c++11
啟用c++11支援。如果編譯器不支援c++11這個選項,沒有影響。預設情況下,支援是禁用的。
c++14
啟用c++14支援。如果編譯器不支援c++14這個選項,沒有影響。預設情況下,支援是禁用的。
當使用debug和release選項時(windows下預設的),該專案將被處理三次:一次生成乙個」meta」makefile,另外兩次生成makefile.debug和makefile.release。
在後面的次數,build_pass和相應的debug或release新增到config選項。這使得它可以執行構建特定任務。
例如:
qmake新增這個變數的值作為編譯器c預處理器巨集(-d選項)。build_pass:config(debug, debug|release) 1234
例如:
然後就可以在**中使用:defines += use_my_stuff1
往往可以指定專案的特殊版本(比如:正式版、試用版)、對一些特殊功能模組(比如:加密狗)進行限制等。#ifdef use_my_stuff
// todo
#else
// todo
#endif12345
指定檢視解決依賴關係的目錄列表,當包含檔案時使用。
例如:
指定在何處放置目標檔案。dependpath += . forms include qrc sources1
例如:
指定ui檔案(參考: qt designer manual)在編譯前被uic處理。所有的構建這些ui檔案所需的依賴、標頭檔案和原始檔都會自動被新增到專案中。destdir = ../../lib1
例如:
指定專案中所有的標頭檔案。forms = mydialog.ui \
mywidget.ui \
myconfig.ui123
qmake會自動檢測是標頭檔案的類中是否需要moc,並增加適當的依賴關係和檔案到專案中,來生成和鏈結moc檔案。
例如:
指定編譯專案時應該被搜尋的#include目錄。headers = myclass.h \
login.h \
mainwindow.h123
例如:
如果路徑包含空格,需要使用引號包含。includepath = c:/msdev/include d:/stl/include1
指定鏈結到專案中的庫列表。如果使用unix -l (library) 和 -l (library path) 標誌,在windows上qmake正確處理庫(也就是說,將庫的完整路徑傳遞給鏈結器),庫必須存在,qmake會尋找-l指定的庫所在的目錄。win32:includepath += "c:/mylibs/extra headers"
unix:includepath += "/home/user/extra headers"12
例如:
如果路徑包含空格,需要使用引號包含路徑。win32:libs += c:/mylibs/math.lib
unix:libs += -l/usr/local/lib -lmath12
指定來自moc的所有中間檔案放置的目錄(含q_object巨集的標頭檔案轉換成標準.h檔案的存放目錄)。win32:libs += "c:/mylibs/extra libs/extra.lib"
unix:libs += "-l/home/user/extra libs" -lextra12
例如:
指定所有中間檔案.o(.obj)放置的目錄。unix:moc_dir = ../myproject/tmp
win32:moc_dir = c:/myproject/tmp12
例如:
指定專案中使用qt的模組。預設情況下,qt包含core和gui,以確保標準的gui應用程式無需進一步的配置就可以構建。unix:objects_dir = ../myproject/tmp
win32:objects_dir = c:/myproject/tmp12
如果想建立乙個不包含qt gui模組的專案,可以使用「 -=」操作符。
下面一行將構建乙個很小的qt專案:
如果要建立乙個介面,裡面用到xml及網路相關的類,那麼需要包含如下模組:qt -= gui # 僅僅使用core模組1
如果你的專案是乙個qt designer外掛程式,使用值uiplugin指定專案構建成庫,但特定的qt designer外掛程式支援,請參考:building and installing the plugin。qt += core gui widgets xml network1
指定qt資源編譯器輸出檔案的目錄(.qrc檔案轉換成qrc_*.h檔案的存放目錄)。
例如:
指定資源檔案 (qrc) 的名稱,參考:unix:rcc_dir = ../myproject/resources
win32:rcc_dir = c:/myproject/resources12
qt之資源系統
例如:
指定應用程式資源檔案的名稱。這個變數的值通常是由qmake或qmake.conf處理,很少需要進行修改。resources += resource/resource.qrc1
例如:
僅適用於windows,指定的圖示應該包含在乙個生成的.rc檔案裡。如果rc_file 和res_file變數都沒有設定這才可利用。例如:
指定專案中所有原始檔。例如:
指定目標檔案的名稱。預設情況下包含的專案檔案的基本名稱。sources = myclass.cpp \
login.cpp \
mainwindow.cpp123
例如:
sources = main.cpp123
模板變數告訴qmake為這個應用程式生成哪種makefile。
可供使用的選項:
選項說明
建立乙個用於構建應用程式的makefile(預設)。
lib建立乙個用於構建庫的makefile。
subdirs
建立乙個用於構建目標子目錄的makefile,子目錄使用subdirs變數指定。
aux建立乙個不建任何東西的makefile。如果沒有編譯器需要被呼叫來建立目標,比如你的專案使用解釋型語言寫的,使用此功能。注:此模板型別只能用於makefile-based生成器。特別是,它不會工作在vcxproj和xcode生成器。
僅適用於windows。建立乙個visual studio應用程式專案。
vclib
僅適用於windows。建立乙個visual studio庫專案。
例如:
指定包含使用者介面翻譯文字的翻譯(.ts)檔案列表。template = lib
sources = main.cpp
target = mylib123
例如:
指定來自uic的所有中間檔案放置的目錄(.ui檔案轉化成ui_*.h檔案的存放目錄)。例如:
Qt之pro配置詳解
更多參考 以 開始,到這一行結束。快捷鍵 ctrl 指定編譯器選項和專案配置,值由qmake內部識別並具有特殊意義。以下配置值控制編譯標誌 選項說明 release 專案以release模式構建。如果也指定了debug,那麼最後乙個生效。debug 專案以debug模式構建。debug and re...
Qt之pro配置詳解
更多參考 以 開始,到這一行結束。快捷鍵 ctrl 指定編譯器選項和專案配置,值由qmake內部識別並具有特殊意義。以下配置值控制編譯標誌 選項說明 release 專案以release模式構建。如果也指定了debug,那麼最後乙個生效。debug 專案以debug模式構建。debug and re...
QT之專案檔案( pro)詳解
從 開始,到這一行結束。target qtdemo headers include painter.h forms forms painter.ui sources sources main.cpp sources painter.cpp resources qrc painter.qrc grea...