本文先来介绍一下项目管理文件(.pro文件)。项目管理文件用于记录项目的一些设置,以及项目包含文件的组织管理。
后缀为“.pro”的文件是项目的管理文件,文件名就是项目的名称。
QT工程中.pro文件,可以作为QT Creator的索引文件打开工程;它还可以作为MakeFile的母文件,通过使用qmake生成MakeFile文件。那么.pro文件怎么编写呢。
一、注释
程序代码文件中一定是有注释的,(.pro)文件中的注释是从#开始,到行尾结束。
二、配置项说明
1、模板变量告诉qmake为应用程序生成哪一种makefile
下面是可供使用的选择:
TEMPLATE = appapp:
建立一个应用程序的makefile,这个是默认值,若模块项未指定,将默认使用此项;lib:
建立一个库的makefile;vcapp:
建立一个应用程序的VisualStudio项目文件;vclib:
建立一个库的VisualStudio项目文件;subdirs:
这是一个特殊的模板,可以创建一个可进入特定目录并为一个项目文件生成makefile,此makfile可以调用make;
2、其他配置项说明
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{
}
三、创建MakeFile
qmake
非常方便、快捷,是一个轻量级的makefile生成工具,在使用该指令前要正确地编写.pro
文件。
当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入:
Makefile可以像这样由“.pro”文件生成:
qmake -o Makefile hello.pro
对于VisualStudio的用户,qmake也可以生成“.dsp”文件,例如:
qmake -tvcapp -o hello.dsp hello.pro
四、一个PRO文件实例
++++++++++++++++++++++++一个PRO文件实例++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++一个PRO文件实例++++++++++++++++++++++++++++++++++++++++
TEMPLATE = app #模块配置
LANGUAGE = C++ #C++语言
CONFIG += qt warn_on debug release
#引入的lib文件,用于引入动态链接库
LIBS += qaxcontainer.lib
#头文件包含路径
INCLUDEPATH += ../../qtcompnent/qtchklisten/inc \
../../qtcompnent/qtclearfile/inc \
../../validator/inc/validerrcode \
../../qtcompnent/qtdir/inc \
../inc \
../../utillib/inc/xmlapi \
../../utillib/inc/util
../../xercesc \
../../qtcompnent/qteditor/inc \
../../qtcompnent/qtfunreview/inc \
../../qtcompnent/qttable/inc \
../../qtcompnent/qtversion/inc \
../../qtcompnent/qtini/inc \
../../icdtool/icdservices/inc \
../../icdtool/dataset/inc \
../../icdtool/doi/inc \
../../icdtool/reportcontrol/inc \
../../icdtool/GSEconctrol/inc \
../../icdtool/inputs/inc \
../../icdtool/SMVconctrol/inc \
../../icdtool/logcontrol/inc \
../../scdpreview/inc/scdpreviewtoollib \
../../scdpreview/form \
../../icdtool/sclcontrol/inc \
../../icdtool/log/inc \
../../icdtool/settingcontrol/inc \
../../qtcompnent/qteditor/inc \
../../qtcompnent/qttreeview/inc \
../../qtcompnent/qttabwidget/inc \
../../communication/inc \
../../qtcompnent/qtabout/inc \
../iedmanage/inc \
../ldmanage/inc \
../foriecrun/inc \
../../qtcompnent/validset/inc
#工程中包含的头文件
HEADERS += ../inc/exportstable.h \
../inc/maintabwidget.h \
../inc/outputtab.h \
../inc/strutil.h \
../inc/treeeditview.h \
../inc/MainForm.h \
../inc/recenfileini.h \
../inc/ExportCIDFunction.h
#工程中包含的源文件
SOURCES += ../src/main.cpp \
../src/exportstable.cpp \
../src/maintabwidget.cpp \
../src/outputtab.cpp \
../src/treeeditview.cpp \
../src/MainForm.cpp \
../src/recenfileini.cpp \
../src/ExportCIDFunction.cpp
#工程中包含的.ui设计文件
FORMS = ../form/scdmainform.ui \
../form/exportiedform.ui \
../form/Exportsedform.ui \
../form/Importsedform.ui \
../form/formiminputs.ui
#图像文件
IMAGES = images/substation.png \
images/communication.png \
images/autocom.png \
images/reportcfg.png \
images/comcfg.png \
images/filetrans.png \
images/review.png \
images/setting.png
#工程中包含的资源文件
RESOURCES = Scintilla.qrc
#CONFIG -= release
CONFIG -= debug
RC_FILE = scdtool.rc
BINLIB = ../../bin \
../../xercesc/lib
UI_HEADERS_DIR = ../inc # .ui文件转会为**.h 存放的目录
UI_SOURCES_DIR = ../src # .ui文件转会为**.cpp 存放的目录
QMAKE_LIBDIR = $${BINLIB}
release {
TARGET = scdtool #指定生成的应用程序名
OBJECTS_DIR = ../../obj/scdtool/release #指定目标文件(obj)的存放目录
}
debug {
TARGET = scdtool_d #指定生成的应用程序名
OBJECTS_DIR = ../../obj/scdtool/debug #指定目标文件(obj)的存放目录
}
MOC_DIR = $${OBJECTS_DIR}
DESTDIR = ../../bin #指定生成的应用程序放置的目录
SOURCES、HEADERS、FORMS 记录了项目中包含的源程序文件、头文件和窗体文件(.ui 文件)的名称。这些文件列表是 Qt Creator 自动添加到项目管理文件里面的,用户不需要手动修改。当添加一个文件到项目,或从项目里删除一个文件时,项目管理文件里的条目会自动修改。
参考:
https://zhuanlan.zhihu.com/p/110782759
https://www.cnblogs.com/wanghuixi/p/9572863.html
https://www.cnblogs.com/xupeidong/p/9476957.html
https://blog.csdn.net/wang13342322203/article/details/82843402