很多的初学者都没有注意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