Qt之pro配置詳解

2021-08-13 14:33:13 字數 4747 閱讀 8696

使用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選項。這使得它可以執行構建特定任務。

例如:

build_pass:config(debug, debug|release) 1234

qmake新增這個變數的值作為編譯器c預處理器巨集(-d選項)。

例如:

defines += use_my_stuff1

然後就可以在**中使用:

#ifdef use_my_stuff

// todo

#else

// todo

#endif12345

往往可以指定專案的特殊版本(比如:正式版、試用版)、對一些特殊功能模組(比如:加密狗)進行限制等。

指定檢視解決依賴關係的目錄列表,當包含檔案時使用。

例如:

dependpath += . forms include qrc sources1

指定在何處放置目標檔案。

例如:

destdir = ../../lib1

指定ui檔案(參考: qt designer manual)在編譯前被uic處理。所有的構建這些ui檔案所需的依賴、標頭檔案和原始檔都會自動被新增到專案中。

例如:

forms = mydialog.ui \

mywidget.ui \

myconfig.ui123

指定專案中所有的標頭檔案。

qmake會自動檢測是標頭檔案的類中是否需要moc,並增加適當的依賴關係和檔案到專案中,來生成和鏈結moc檔案。

例如:

headers = myclass.h \

login.h \

mainwindow.h123

指定編譯專案時應該被搜尋的#include目錄。

例如:

includepath = c:/msdev/include d:/stl/include1

如果路徑包含空格,需要使用引號包含。

win32:includepath += "c:/mylibs/extra headers"

unix:includepath += "/home/user/extra headers"12

指定鏈結到專案中的庫列表。如果使用unix -l (library) 和 -l (library path) 標誌,在windows上qmake正確處理庫(也就是說,將庫的完整路徑傳遞給鏈結器),庫必須存在,qmake會尋找-l指定的庫所在的目錄。

例如:

win32:libs += c:/mylibs/math.lib

unix:libs += -l/usr/local/lib -lmath12

如果路徑包含空格,需要使用引號包含路徑。

win32:libs += "c:/mylibs/extra libs/extra.lib"

unix:libs += "-l/home/user/extra libs" -lextra12

指定來自moc的所有中間檔案放置的目錄(含q_object巨集的標頭檔案轉換成標準.h檔案的存放目錄)。

例如:

unix:moc_dir = ../myproject/tmp

win32:moc_dir = c:/myproject/tmp12

指定所有中間檔案.o(.obj)放置的目錄。

例如:

unix:objects_dir = ../myproject/tmp

win32:objects_dir = c:/myproject/tmp12

指定專案中使用qt的模組。預設情況下,qt包含core和gui,以確保標準的gui應用程式無需進一步的配置就可以構建。

如果想建立乙個不包含qt gui模組的專案,可以使用「 -=」操作符。

下面一行將構建乙個很小的qt專案:

qt -= gui # 僅僅使用core模組1

如果要建立乙個介面,裡面用到xml及網路相關的類,那麼需要包含如下模組:

qt += core gui widgets xml network1

如果你的專案是乙個qt designer外掛程式,使用值uiplugin指定專案構建成庫,但特定的qt designer外掛程式支援,請參考:building and installing the plugin。

指定qt資源編譯器輸出檔案的目錄(.qrc檔案轉換成qrc_*.h檔案的存放目錄)。

例如:

unix:rcc_dir = ../myproject/resources

win32:rcc_dir = c:/myproject/resources12

指定資源檔案 (qrc) 的名稱,參考:

qt之資源系統

例如:

resources += resource/resource.qrc1

指定應用程式資源檔案的名稱。這個變數的值通常是由qmake或qmake.conf處理,很少需要進行修改。

例如:

僅適用於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庫專案。

例如:

template = lib

sources = main.cpp

target = mylib123

指定包含使用者介面翻譯文字的翻譯(.ts)檔案列表。

例如:

指定來自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...