您的位置:首页 > 编程语言 > Qt开发

Qt介绍2---.pro .pri .prf .prl文件

2017-01-18 00:36 267 查看

*.pro

是qmake 的工程(project)文件,用来启动Qt工程。下图:

这是一个典型的Qt示例程序的.pro文件(propriprfprl.pro):
TEMPLATE = app
CONFIG += QT
QT += core gui

TARGET = propriprfprl

SOURCES += main.cpp/
widget.cpp
HEADERS  += widget.h
FORMS    += widget.ui

前面3行是qmake的默认值,可以省略;TARGET 这行指定工程名,也可以省略。

*.pri

i 是(include)的首字母。类似于C、C++中的头文件,可以把 *.pro 文件内的一部分单独放到一个 *.pri 文件内,然后包含进来。

接前面的例子,我们将源文件的设置独立出来,放到propriprfprl.pri文件内:
SOURCES += main.cpp/
widget.cpp
HEADERS  += widget.h
FORMS    += widget.ui


这时.pro文件需要include(propriprfprl.pri)包含.pri,如下:
TEMPLATE = app
CONFIG += QT
QT += core gui

TARGET = propriprfprl
include(propriprfprl.pri)

pri可以优化对于大型项目,含有多个*.pro文件,这些.pro需要有些共同的设置或需要的文件。

*.prf

f是特性(feature)的首字符,和pri文件类似,该文件也是要被包含进pro文件的,只是:它更隐蔽。

在这个例子中其实已经用到了,这就是
CONFIG+=QT


当我们在CONFIG中指定一个东西时,qmake就会尝试去加载相应的feature文件:
Qt安装目录下的 mkspecs/features/qt.prf
features 文件的文件名必须小写
qmake 去哪些目录下搜索features文件呢?在manual中有介绍

例子的features文件:propriprfprl.prf
win32:CONFIG += console


然后在pro文件内添加进去,达到和 CONFIG += console 同样的效果

CONFIG += propriprfprl


【注】:在.pro文件中也可以使用 load命令来加载.prf文件,比如前面的命令可以认为等价于
load(propriprfprl)


*.prl

l是链接(link)的首字符。主要和生成与使用静态库密切相关(动态库也可以有该文件,去Qt安装目录下的lib目录下看看即可)。
生成静态库时,我们需要使用下列配置(进而生成和库文件同名的 *.prl 文件)
CONFIG += create_prl

当工程的TEMPLATE为app时,会自动添加如下指令(找库文件的时候,会尝试找相应的 *.prl 文件)
CONFIG += link_pri


那么该文件有什么用处呢?举一个大家可能熟悉的例子QextSerialPort1.2这个库(windows下的情况):
编译时,需要 setupapi.lib、advapi32.lib、user32.lib 这几个库文件
编译成静态库以后,它本身是不包含这3个库文件信息的

于是,当我们使用这个 QextSerialPort 静态库,还是需要指定 这几个库文件

如果有prl文件呢,该文件就会包含依赖信息了,我们看一下:
QMAKE_PRL_BUILD_DIR = E:/dbzhang800-qextserialport/buildlib
QMAKE_PRO_INPUT = buildlib.pro
QMAKE_PRL_TARGET = qextserialport-1.2
QMAKE_PRL_CONFIG = include_source_dir incredibuild_xge lex yacc warn_on uic resources incremental_off windows release ReleaseBuild Release build_pass qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe stl exceptions rtti mmx 3dnow sse sse2 release ReleaseBuild Release build_pass qt qextserialport-buildlib create_prl qextserialport-uselib qextserialport-static static debug_and_release build_all release ReleaseBuild Release build_pass no_autoqmake staticlib static moc thread
QMAKE_PRL_LIBS = setupapi.lib advapi32.lib user32.lib d://Qt//4.7.0//lib//QtGui4.lib d://Qt//4.7.0//lib//QtCore4.lib
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qmake pro pri prf prl