很多的初學者都沒有注意pro 文件的內容 今天簡單的介紹一下 這個文件主要內容
TEMPLATE:這個變量是用來定義你的工程將被編譯成什么模式。如果沒有這個設置,系統將默認編譯為application。
TEMPLATE=app表示這個project將被編譯成一個應用程序(application)
lib(生成庫的Makefile)
subdirs(生成有多級目錄管理的Makefile),
vcapp,vclib,vcsubdirs(對應Windows 下面VC)
TEMPLATE = app //文件中的寫法
TARGET:生成最后目標的名字
TARGET = keysiUI
DESTDIR:指定生成目標的路徑
DEPENDPATH:工程的依賴路徑
INCLUDEPATH:這個用來指定工程要用到的頭文件路徑
INCLUDEPATH += /opt/ros/indigo/include DEPENDPATH += /opt/ros/indigo/include INCLUDEPATH += /usr/include/curl DEPENDPATH += /usr/include/curl
SOURCES:工程需要的源文件
SOURCES += main.cpp\
mainwindow.cpp \
browser.cpp \
singleton.cpp \
HEADERS:工程所需要的頭文件
HEADERS += mainwindow.h \
include.h \
includeClass.h
FORMS:工程要用到的ui文件(ui文件時用QT設計器生成的)
HEADERS += mainwindow.h \
include.h \
includeClass.h
LIBS:加載動態庫
LIBS += -l:/opt/ros/indigo/lib/libcv_bridge.so LIBS += -l:/usr/lib/x86_64-linux-gnu/libboost_thread.so LIBS += -l:/usr/lib/x86_64-linux-gnu/libpthread.so INCLUDEPATH += /usr/include LIBS += -l:/usr/lib/x86_64-linux-gnu/libjsoncpp.so LIBS += -l:/usr/lib/x86_64-linux-gnu/libcurl.so LIBS += -L/opt/ros/indigo/lib -lroscpp -lrospack -lpthread -lrosconsole -lrosconsole_log4cxx -lrosconsole_backend_interface -lxmlrpcpp -lroscpp_serialization -lrostime -lcpp_common -lroslib -ltf -lyaml-cpp ###2017-1-18 pm sub -lkdl_conversions LIBS += -l:/opt/ros/indigo/lib/libroslib.so
TRASHLATIONS:加載要用到的語言翻譯*.ts文件
RESOURCES:加載要用到的資源*.qrc文件。
RESOURCES += \
image.qrc
CONFIG:告訴qmake應用程序的配置信息。
這個變量可以用來指定是生成debug模式還是release模式,也可以都生成。
也可以用來打開編譯器警告(warn_on輸出盡可能多的警告信息)或者
關閉(warn_off -編譯器會輸出盡可能少的警告信息)。還可以用來配置要Qt加載庫。
想要qt+多線程:CONFIG+=qt thread
Eg:
CONFIG+=debug_and_release
CONFIG(debug,debug|release){
TARGET= hello
DESTDIR= ./debug
}else{
TARGET= hello
DESTDIR= ./release
}
CONFIG += c++11 CONFIG -= app_bundle
UI_DIR:UIC將ui轉化為頭文件所存放的目錄
RCC_DIR:RCC將qrc文件轉化為頭文件所存放的目錄
MOC_DIR:MOC命令將含Q_OBJECT的頭文件轉換為標准的頭文件存放的目錄
OBJECTS_DIR:生成的目標文件存放的目錄
DEFINES:應用程序所需的額外的預處理程序定義的列表#在.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 //程序圖標
QT是跨平台的,所以我們在不同的平台上用同一個pro文件,這要加入有關平台的信息。
windows是win32,Linux平台是unix。
Eg:
在Windows和Linux的動態庫文件格式是不一樣的。一個是lib文件一個是so文件
win32:LIBS+= ./mitab/mitab_i.lib
unix:LiBS+= ./mitab/libmitab.so
eg:
win32{
SOURCES+= hello_win.cpp //win平台
}
unix{
SOURCES+= hello_win.cpp //unix/linux平台
}
以通過在其它任何一個變量的變量名前加$$來把這個變量的值分配給當前的變量。例如:
MY_DEFINES= $$DEFINE #將DEFINE的值分配給MY_DEFINES