使用过QT框架进行项目开发的小伙伴,也许都知道.pro文件, 但文件里面的具体配置方式可能比较模糊。本文将详细说明文件里各配置项的含义,并对其编写方法进行归纳总结,以便各位读者可以在未来的项目开发中快速而准确地编写.pro文件。
一、配置项详细说明
- 注释:注释是从一行的#开始,到这一行的结束。
- QT += :这个是添加QT项目需要的模块的,若项目中要排除某个模块,也可用QT -=配置项。
- TEMPLATE = : 这个配置项确定qmake为这个应用程序生成哪种makefile 。有下面五种形式可供选择:
app:建立一个应用程序的makefile,这个是默认值,若模块项未指定,将默认使用此项;
lib:建立一个库的makefile;
vcapp:建立一个应用程序的VisualStudio项目文件;
vclib:建立一个库的VisualStudio项目文件;
subdirs:这是一个特殊的模板,可以创建一个可进入特定目录并为一个项目文件生成makefile,此makfile可以调用make;
-
TARGET = :这个配置项用来指定最后生成的目标应用程序的名称。
-
CONFIG += : 用来告诉qmake关于应用程序的配置信息,使用+=表示在现有的配置上添加,这样会更安全。比如,CONFIG += qt warn_on release 其具体的意义为:
qt :告诉qmake此程序是使用qt来连编的。即qmake在连接、为编译添加所需包含路径时会考虑qt的库;
warn_on :告诉qmake要将编译器设置为输出警告信息形式;
release :告诉qmake应用程序必须被连编为一个可发布的应用程序。开发过程中,也可以使用debug;
-
UIC_DIR += :用来指定uic命令,将.ui文件转化为ui_*.h文件存放的目录。
-
RCC_DIR += :用来指定rcc命令,将.qrc文件转换成qrc_*.h文件存放的目录。
-
MOC_DIR += :用来指定moc命令,将含有Q_OBJECT的头文件转换成标准.h文件存放的目录。
-
OBJECTS_DIR += :用来指定目标文件obj的存放目录。
-
DEPENDPATH += : 用来指定工程的依赖路径。
-
INCLUDEPATH += : 用来指定工程所需要的头文件。
-
CODECFORSRC += : 用来指定源文件的编码格式。
-
FORMS += :用来指定工程中的ui文件。
-
HEADERS += : 用来指定工程中所包含的头文件。
-
SOURCES += :用来指定工程中包含的源文件。
-
RESOURCES += :用来指定工程中所包含的资源文件。
-
LIBS += :用来指定引入的lib文件的路径,一般会在前面加下参数-L,根据不同的版本可以分为两种形式:
Release: LIBS += -L folder Path //release版本引入的lib文件
Debug: LIBS += -L folder Path //debug版本引入的lib文件
-
DEFINES += : 用来定义编译选项。
-
DESTDIR += :用来指定目标的生成路径。
-
跨平台处理信息也要写在.pro文件中。 其示例如下:
win32{
}
unix{
}
二、 .pro文件配置实例
//添加QT依赖的库
QT += gui
QT += core xml network multimedia serialport
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
//添加c11配置支持
CONFIG += c++11
//输出文件的名称
TARGET = YouAppName
//配置控制台输出
CONFIG += console
//输出类型application
TEMPLATE = app
//源文件
SOURCES += main.cpp \
appconfig.cpp \
opendoorthread.cpp \
TestProject/testform.cpp \
TestProject/common.pb.cpp \
TestProject/goods_req.pb.cpp \
TestProject/goods_resp.pb.cpp
//头文件
HEADERS += \
appconfig.h \
opendoorthread.h \
TestProject/testform.h \
TestProject/common.pb.h \
TestProject/goods_req.pb.h \
TestProject/goods_resp.pb.h
//配置debug和release
CONFIG +=debug_and_release
CONFIG(debug,debug|release){
DESTDIR += $$PWD/debug
LIBS += -L$$PWD/debug/ -lThorModel
LIBS += -L$$PWD/debug/ -lThorUtil
LIBS += -L$$PWD/debug/ -lThorBLL
LIBS += -L$$PWD/debug/ -lThorHardwareUtil
LIBS += -L$$PWD/debug/ -lprotobufd
LIBS += -L$$PWD/debug/ -lprotobuf-lited
LIBS += -L$$PWD/debug/ -lopencv_core2410d
LIBS += -L$$PWD/debug/ -lopencv_highgui2410d
LIBS += -L$$PWD/debug/ -lopencv_imgproc2410d
LIBS += -L$$PWD/debug/ -lQtActionDetectd
}else{
}
//需要的头文件
INCLUDEPATH += $$PWD/AllDLL/include
INCLUDEPATH += $$PWD/debug/3rdparty/opencv-2.4.10/include \
$$PWD/debug/3rdparty/opencv-2.4.10/include/opencv \
$$PWD/debug/3rdparty/opencv-2.4.10/include/opencv2
//ui
FORMS += \
TestProject/testform.ui
qmake非常方便、快捷,是一个轻量级的makefile生成工具,在使用该指令前要正确地编写.pro文件。