尽管每次和cmake对比起来,我们总是说 qmake 简单、功能少。但是qmake仍然是一个非常复杂的东西,我想大多人应该和我一样吧:
本文只能抓住一条线,简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件:干嘛用的,如何用的
*.pro
qmake 的工程(project)文件,这个大家肯定都非常熟悉了。那我就不费话了,上例子:
这是一个典型的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
这时,我们的 propriprfprl.pro 文件就可以简化为:
TEMPLATE = app
CONFIG += QT
QT += core gui
TARGET = propriprfprl
include(propriprfprl.pri)
- 这有什么用呢?对我们这个例子来说,确实没什么用,反而多了一个文件,更麻烦了。
- 可是,如果一个大点的项目,含有多个*.pro文件呢,这些pro需要有些共同的设置或需要的文件,这时就很有必要了。
*.prf
f又是神马东东?特性(feature)的首字符
- 和pri文件类似,该文件也是要被包含进pro文件的
- 只是:它更隐蔽
- 你经常和它打交道,可能却一直视而不见
我们这个例子中其实已经用到了,这就是
CONFIG+=QT
当我们在CONFIG中指定一个东西时,qmake就会尝试去加载相应的feature文件:
- Qt安装目录下的 mkspecs/features/qt.prf
- features 文件的文件名必须小写
- qmake 去哪些目录下搜索features文件呢?
- manual中有介绍,此处略
- 暂时只知道前面提到的 $$QTDIR/mkspecs/features 就可以了
写一个自己的features文件:propriprfprl.prf
win32:CONFIG += console
- 为win32的程序添加控制台,有点多次一举哈。
- 将该文件放置到我们前面提到的目录中
然后在pro文件内添加
CONFIG += propriprfprl
看到和 CONFIG += console 同样的效果了吧?
注:我们也可以使用 load命令来加载prf文件,比如前面的命令可以认为等价于
load(propriprfprl)
*.prl
l 这个东西容易理解,链接(link)的首字符。主要和生成与使用静态库密切相关(动态库也可以有该文件,去Qt安装目录下的lib目录下看看即可)。
- 生成静态库时,我们需要使用下列配置(进而生成和库文件同名的 *.prl 文件)
CONFIG += create_prl
- 当工程的TEMPLATE为app时,会自动添加如下指令(找库文件的时候,会尝试找相应的 *.prl 文件)
CONFIG += link_pri
那么该文件有什么用处呢?举一个大家可能熟悉的例子QextSerialPort1.2这个库(windows下的情况):
如果有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文件.pdf ./QT的信号与槽机制介绍.pdf ./QT中PRO文件写法的详细介绍.pdf ./Qt持久性对象进行序列化.pdf ./Qt新渲染底层Scene Graph研究3.pdf ./Qt模块化笔记之Qt_Quick--用...
Qt5.14.2交叉编译配套qmake.conf文件
这个是单独的qmake.exe工具,如果不想安装qt的相关的包仅仅想使用QT creator。
再在终端输入:zhuquan@zhuquan-HP-Z230-Tower-Workstation:~$ qmake -v显示结果为:QMake version
使用qmake,开发者创建一个简单的“项目”文件并且运行qmake生成适当的Makefile。qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码。Trolltech公司使用qmake作为Qt库和Qt所提供的工具...
qmake使用手册
QMake指南(高级技巧),PDF格式。
qmake使用指南
QT4学习资源,qmake-manual,英文版
使用cmake替换Qt的默认.pro工程,Qt工程的.pro文件,将qmake转化为cmake写法及注意事项,cmake/Qt/.pro
qmake 手册 (初级部分) from: cuteqt.org
在这篇文档中,将以C/C++的源码作为我们基础,所以必然涉及一些关于C/C++的编译的知识,相关于这方面的内容,还请各位查看相关的编译器的文档。这里所默认的编译器是UNIX下的GCC和CC。
qmake用户手册,感兴趣的朋友,可以下载看看,不需要资源分
Qt pro文件转 vc project qmake -t vcapp
本篇讲解在Qt的.pro文件使用defineReplace函数。 1、先看官网的说明文档 https://doc.qt.io/qt-5/qmake-language.html#replace-functions 1.1 语法 使用defineReplace函数定义func函数 defineReplace(func) { } ...
qmake用户手册.pdf qmake用户手册.pdf qmake用户手册.pdf qmake用户手册.pdf
编译需要安装好qt和vs环境,可以直接生成需要的库,动态应用,有需要xmpp通信协议开发的童鞋快来下载吧!
qmake作为QT编译工具,也可以连接第三方库,主要介绍如何使用qmake连接第三方库(如:SDL库)
qt4资源 和一些qmake .....和一些港湾网络的一个教学材料。。。哈哈
Qt+Cutelyst学习笔记(二十八)win10+Qt5.15.2+qmake接收表单提交的文件 示例源码 https://blog.csdn.net/aggs1990/article/details/124128783 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下