TEMPLATE:這個(gè)變量是用來定義你的工程將被編譯成甚么模式。如果沒有這個(gè)設(shè)置,系統(tǒng)將默許編譯為application。
TEMPLATE=app表示這個(gè)project將被編譯成1個(gè)利用程序(application)
lib(生成庫的Makefile)
subdirs(生成有多級(jí)目錄管理的Makefile),
vcapp,vclib,vcsubdirs(對應(yīng)Windows 下面VC)
TARGET:生成最后目標(biāo)的名字
DESTDIR:指定生成目標(biāo)的路徑
DEPENDPATH:工程的依賴路徑
INCLUDEPATH:這個(gè)用來指定工程要用到的頭文件路徑
SOURCES:工程需要的源文件
HEADERS:工程所需要的頭文件
FORMS:工程要用到的ui文件(ui文件時(shí)用QT設(shè)計(jì)器生成的)
LIBS:加載動(dòng)態(tài)庫。LIBS+=./mitab/libmitab.so
TRASHLATIONS:加載要用到的語言翻譯*.ts文件
RESOURCES:加載要用到的資源*.qrc文件。
CONFIG:告知qmake利用程序的配置信息。
這個(gè)變量可以用來指定是生成debug模式還是release模式,也能夠都生成。
也能夠用來打開編譯器正告(warn_on輸出盡量多的正告信息)或
關(guān)閉(warn_off -編譯器會(huì)輸出盡量少的正告信息)。還可以用來配置要Qt加載庫。
想要qt+多線程:CONFIG+=qt thread
Eg:
CONFIG+=debug_and_release
CONFIG(debug,debug|release){
TARGET= hello
DESTDIR= ./debug
}else{
TARGET= hello
DESTDIR= ./release
}
UI_DIR:UIC將ui轉(zhuǎn)化為頭文件所寄存的目錄
RCC_DIR:RCC將qrc文件轉(zhuǎn)化為頭文件所寄存的目錄
MOC_DIR:MOC命令將含Q_OBJECT的頭文件轉(zhuǎn)換為標(biāo)準(zhǔn)的頭文件寄存的目錄
OBJECTS_DIR:生成的目標(biāo)文件寄存的目錄
DEFINES:利用程序所需的額外的預(yù)處理程序定義的列表#在.h文件中就能夠使用:#ifdefinexx_xx_xxx
LIBS += -L folderPath //引入的lib文件的路徑 -L:引入路徑
Release:LIBS+= -L folderPath // release 版引入的lib文件路徑
Debug:LIBS+= -L folderPath // Debug 版引入的lib 文件路徑
RC_FILE = xxx.icns //程序圖標(biāo)
QT是跨平臺(tái)的,所以我們在不同的平臺(tái)上用同1個(gè)pro文件,這要加入有關(guān)平臺(tái)的信息。
windows是win32,Linux平臺(tái)是unix。
Eg:
在Windows和Linux的動(dòng)態(tài)庫文件格式是不1樣的。1個(gè)是lib文件1個(gè)是so文件
win32:LIBS+= ./mitab/mitab_i.lib
unix:LiBS+= ./mitab/libmitab.so
eg:
win32{
SOURCES+= hello_win.cpp //win平臺(tái)
}
unix{
SOURCES+= hello_win.cpp //unix/linux平臺(tái)
}
以通過在其它任何1個(gè)變量的變量名前加$$來把這個(gè)變量的值分配給當(dāng)前的變量。例如:
MY_DEFINES= $$DEFINE #將DEFINE的值分配給MY_DEFINES
/***********本人實(shí)例***************/
QT += core gui network xml sql
PATH +=$$(PATH) #這個(gè)PATH變量在QT creator的 projects選項(xiàng)中Build environment可查看到,屬于全局變量
INCLUDEPATH +=$$PATH /root/Desktop/TOU/API/header/#如果不加上用戶自定義的有用文件絕對路徑,在用戶自定義cpp中將提示找不到對應(yīng)的頭文件
message($$INCLUDEPATH)
DEPENDPATH +=$$(PATH)
message($$DEPENDPATH)
OBJECTS_DIR =tmp
UI_DIR =inc
MOC_DIR =tmp
RCC_DIR = tmp
RC_FILE = ICON.rc
RESOURCES +=
HEADERS +=
inc/widget.h
inc/Shareheader.h
API/header/qextserialbase.h
API/header/posix_qextserialport.h
API/header/comport.h
API/header/Encrypt.h
API/header/mylineedit.h
API/header/keyboardwidget.h
SOURCES +=
src/widget.cpp
src/main.cpp
API/source/qextserialbase.cpp
API/source/posix_qextserialport.cpp
API/source/mylineedit.cpp
API/source/keyboardwidget.cpp
API/source/comport.cpp
FORMS +=
UI/widget.ui
UI/keyboardwidget.ui
contains(CONFIG,Release){ #全局函數(shù) contains
message(Release build!)
#如果是下載到開發(fā)板中的,請放開Q_WS_EMBEDED
DEFINES =QT_NODEBUG_SUPPORT Q_WS_EMBEDED
CONFIG +=warn_off
TARGET = TOU_release
DESTDIR = release
}else{
message(Debug build!) #全局函數(shù)message
DEFINES = DQT_DEBUG_SUPPORT
CONFIG +=warn_on
TARGET = TOU_debug
DESTDIR = debug
}
win32: {#win
SOURCES += ###
}
unix :{
contains(DEFINES,Q_WS_EMBEDED){
INCLUDEPATH +=/usr/local/Trolltech/QtEmbedded⑷.8.5-arm/include/Qwt/
LIBS += -L /usr/local/Trolltech/QtEmbedded⑷.8.5-arm/include/Qwt/lib-lqwt
}else{
INCLUDEPATH +=/opt/qtsdk⑵010.05/qt/include/Qwt/
LIBS += -L /opt/qtsdk⑵010.05/qt/include/Qwt/lib -lqwt
}
}