原文地址:https://blog.csdn.net/liang19890820/article/details/51774724
簡述
使用Qt的時候,我們經常會對pro進行一系列繁瑣的配置,為方便大家理解、查找,現將常用的配置進行整理。
| 版權聲明:一去、二三里,未經博主允許不得轉載。
配置
注釋
以“#”開始,到這一行結束。
快捷鍵:Ctrl + /
CONFIG
指定編譯器選項和項目配置,值由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) { unix: TARGET = $$join(TARGET,,,_debug) else: TARGET = $$join(TARGET,,,d) }
- 1
- 2
- 3
- 4
DEFINES
qmake添加這個變量的值作為編譯器C預處理器宏(-D選項)。
例如:
DEFINES += USE_MY_STUFF
- 1
然后就可以在代碼中使用:
#ifdef USE_MY_STUFF // TODO #else // TODO #endif
- 1
- 2
- 3
- 4
- 5
往往可以指定項目的特殊版本(比如:正式版、試用版)、對一些特殊功能模塊(比如:加密狗)進行限制等。
DEPENDPATH
指定查看解決依賴關系的目錄列表,當包含文件時使用。
例如:
DEPENDPATH += . forms include qrc sources
- 1
DESTDIR
指定在何處放置目標文件。
例如:
DESTDIR = ../../lib
- 1
FORMS
指定UI文件(參考: Qt Designer Manual)在編譯前被uic處理。所有的構建這些UI文件所需的依賴、頭文件和源文件都會自動被添加到項目中。
例如:
FORMS = mydialog.ui \ mywidget.ui \ myconfig.ui
- 1
- 2
- 3
HEADERS
指定項目中所有的頭文件。
qmake會自動檢測是頭文件的類中是否需要moc,並增加適當的依賴關系和文件到項目中,來生成和鏈接moc文件。
例如:
HEADERS = myclass.h \ login.h \ mainwindow.h
- 1
- 2
- 3
INCLUDEPATH
指定編譯項目時應該被搜索的#include目錄。
例如:
INCLUDEPATH = c:/msdev/include d:/stl/include
- 1
如果路徑包含空格,需要使用引號包含。
win32:INCLUDEPATH += "C:/mylibs/extra headers" unix:INCLUDEPATH += "/home/user/extra headers"
- 1
- 2
LIBS
指定鏈接到項目中的庫列表。如果使用Unix -l (library) 和 -L (library path) 標志,在Windows上qmake正確處理庫(也就是說,將庫的完整路徑傳遞給鏈接器),庫必須存在,qmake會尋找-l指定的庫所在的目錄。
例如:
win32:LIBS += c:/mylibs/math.lib unix:LIBS += -L/usr/local/lib -lmath
- 1
- 2
如果路徑包含空格,需要使用引號包含路徑。
win32:LIBS += "C:/mylibs/extra libs/extra.lib" unix:LIBS += "-L/home/user/extra libs" -lextra
- 1
- 2
MOC_DIR
指定來自moc的所有中間文件放置的目錄(含Q_OBJECT宏的頭文件轉換成標准.h文件的存放目錄)。
例如:
unix:MOC_DIR = ../myproject/tmp win32:MOC_DIR = c:/myproject/tmp
- 1
- 2
OBJECTS_DIR
指定所有中間文件.o(.obj)放置的目錄。
例如:
unix:OBJECTS_DIR = ../myproject/tmp win32:OBJECTS_DIR = c:/myproject/tmp
- 1
- 2
QT
指定項目中使用Qt的模塊。默認情況下,QT包含core和gui,以確保標准的GUI應用程序無需進一步的配置就可以構建。
如果想建立一個不包含Qt GUI模塊的項目,可以使用“ -=”操作符。
下面一行將構建一個很小的Qt項目:
QT -= gui # 僅僅使用core模塊
- 1
如果要創建一個界面,里面用到XML及網絡相關的類,那么需要包含如下模塊:
QT += core gui widgets xml network
- 1
如果你的項目是一個Qt Designer插件,使用值uiplugin指定項目構建成庫,但特定的Qt Designer插件支持,請參考:Building and Installing the Plugin。
RCC_DIR
指定Qt資源編譯器輸出文件的目錄(.qrc文件轉換成qrc_*.h文件的存放目錄)。
例如:
unix:RCC_DIR = ../myproject/resources win32:RCC_DIR = c:/myproject/resources
- 1
- 2
RESOURCES
指定資源文件 (qrc) 的名稱,參考:Qt之資源系統
例如:
RESOURCES += Resource/resource.qrc
- 1
RC_FILE
指定應用程序資源文件的名稱。這個變量的值通常是由qmake或qmake.conf處理,很少需要進行修改。
例如:
RC_FILE += myapp.rc
- 1
RC_ICONS
僅適用於Windows,指定的圖標應該包含在一個生成的.rc文件里。如果RC_FILE 和RES_FILE變量都沒有設置這才可利用。
例如:
RC_ICONS = myapp.ico
- 1
SOURCES
指定項目中所有源文件。
例如:
SOURCES = myclass.cpp \ login.cpp \ mainwindow.cpp
- 1
- 2
- 3
TARGET
指定目標文件的名稱。默認情況下包含的項目文件的基本名稱。
例如:
TEMPLATE = app TARGET = myapp SOURCES = main.cpp
- 1
- 2
- 3
上面項目會生成一個可執行文件,Windows下為myapp.exe,Unix下為myapp。
TEMPLATE
模板變量告訴qmake為這個應用程序生成哪種makefile。
可供使用的選項:
| 選項 | 說明 |
|---|---|
| app | 創建一個用於構建應用程序的Makefile(默認)。 |
| lib | 創建一個用於構建庫的Makefile。 |
| subdirs | 創建一個用於構建目標子目錄的Makefile,子目錄使用SUBDIRS變量指定。 |
| aux | 創建一個不建任何東西的Makefile。如果沒有編譯器需要被調用來創建目標,比如你的項目使用解釋型語言寫的,使用此功能。注:此模板類型只能用於Makefile-based生成器。特別是,它不會工作在vcxproj和Xcode生成器。 |
| vcapp | 僅適用於Windows。創建一個Visual Studio應用程序項目。 |
| vclib | 僅適用於Windows。創建一個Visual Studio庫項目。 |
例如:
TEMPLATE = lib SOURCES = main.cpp TARGET = mylib
- 1
- 2
- 3
TRANSLATIONS
指定包含用戶界面翻譯文本的翻譯(.ts)文件列表。
例如:
TRANSLATIONS += Resource/myapp_zh.ts \ Resource/myapp_en.ts
- 1
- 2
UI_DIR
指定來自uic的所有中間文件放置的目錄(.ui文件轉化成ui_*.h文件的存放目錄)。
例如:
unix:UI_DIR = ../myproject/ui win32:UI_DIR = c:/myproject/ui
- 1
- 2
