当前位置: 首页 > news >正文

Qt Pro、Pri、Prf

一、概述

1、在Qt中,通常使用.pro(project)、pri(private include)、prf(project file)三种文件扩展名来组织项目。对于模块化编程,Qt提供了Pro和Pri,Pro管理项目,Pri管理模块

2、pro文件是Qt项目的核心文件,包含了项目的所有编译信息,用于定义项目的源代码、包含路径、编译器选型、链接库等等。一个pro文件就是一个Qt项目,构建这个项目只需要执行qmake和make命令即可。

3、pri文件通常位于源码树的不同目录中,用于存放各个目录所需的私有头文件、源文件或其它资源。pri文件可以被其他的pro或pri文件所包含。通过实现各个目录的私有信息,pri文件提高了模块化的能力,而且可以防止重复的编写。

4、prf文件是一个用户定义的配置文件,也可以被包含在pro或pri文件中。通常情况下,prf文件用于设置不同平台和编译器的特定选项,或者为Qt的mkspecs提供额外的功能支持。

5、总结:pro用于描述项目的整体而pri用于描述项目中各个私有模块prf则用于定义一些通用的编译器选项和配置,可以使Qt的构建更加灵活

二、配置项说明

1、模板变量告诉QMAKE为应用程序生成哪一种MAKEFILE

下面是可供使用的选择:

TEMPLATE = app

app:建立一个应用程序的makefile,这个是默认值,若模块项未指定,将默认使用此项;

lib:建立一个库的makefile;

vcapp:建立一个应用程序的VisualStudio项目文件;

vclib:建立一个库的VisualStudio项目文件;

subdirs:这是一个特殊的模板,可以创建一个可进入特定目录并为一个项目文件生成makefile,此makfile可以调用make;

2、TARGET = :这个配置项用来指定最后生成的目标应用程序的名称

3、CONFIG += : 用来告诉qmake关于应用程序的配置信息,使用+=表示在现有的配置上添加,这样会更安全。比如,CONFIG += qt warn_on

4、UIC_DIR += :用来指定uic命令,将.ui文件转化为ui_*.h文件存放的目录

5、RCC_DIR += :用来指定rcc命令,将.qrc文件转换成qrc_*.h文件存放的目录

6、MOC_DIR += :用来指定moc命令,将含有Q_OBJECT的头文件转换成标准.h文件存放的目录

7、OBJECTS_DIR += :用来指定目标文件obj的存放目录

8、DEPENDPATH += : 用来指定工程的依赖路径应用程序所依赖的搜索路径。

 DEPENDPATH += $$PWD/xBus/include

9、INCLUDEPATH += : 用来指定工程所需要的头文件

   INCLUDEPATH += $$PWD/xBus/include

10、LIBS += :用来指定引入的lib文件的路径,一般会在前面加下参数-L

 win32:CONFIG(release, debug|release): LIBS += -L$$PWD/xBus/lib/release/ -lXBUS_L1else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/xBus/lib/debug/ -lXBUS_L1else:unix: LIBS += -L$$PWD/xBus/lib/ -lXBUS_L1

11、DEFINES += : 用来定义编译选项。

DEFINES += QT_DEPRECATED_WARNINGS

12、DESTDIR += :用来指定目标的生成路径, 放置可执行程序的目录

BIN_DIR     = $$PWD/../bin/debug
DESTDIR = $$BIN_DIR

13、TRANSLATIONS += zh_CN.ts: 翻译文件

14、message($$PWD):当前pro文件所在路径

15、message($${OUT_PWD}):makefile输出路径

16、message($$_PRO_FILE_PWD_):pro文件所在路径(注意:即使它在pri文件内,也是指代的包含它的pro所在的路径)

17、message($$_PRO_FILE_):pro的全路径

18、RC_ICONS = :应用程序图标(后缀.ico)

RC_ICONS = icon.ico

http://www.lryc.cn/news/535671.html

相关文章:

  • 基于AIOHTTP、Websocket和Vue3一步步实现web部署平台,无延迟控制台输出,接近原生SSH连接
  • 如何在MacOS上查看edge/chrome的扩展源码
  • 【xdoj-离散线上练习H】T234(C++)
  • Docker Desktop Windows 安装
  • springCloud-2021.0.9 之 GateWay 示例
  • JDK8 stream API用法汇总
  • windows生成SSL的PFX格式证书
  • 玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成
  • 2025 西湖论剑wp
  • FPGA 28 ,基于 Vivado Verilog 的呼吸灯效果设计与实现( 使用 Vivado Verilog 实现呼吸灯效果 )
  • 单片机简介
  • C++ 设计模式-桥接模式
  • 不小心删除服务[null]后,git bash出现错误
  • 16.React学习笔记.React更新机制
  • 【Elasticsearch】词干提取(Stemming)
  • 【AI论文】10亿参数大语言模型能超越405亿参数大语言模型吗?重新思考测试时计算最优缩放
  • 【设计模式】【行为型模式】状态模式(State)
  • PostgreSQL错误: 编码“UTF8“的字符0x0xe9 0x94 0x99在编码“WIN1252“没有相对应值
  • Mac ARM 架构的命令行(终端)中,删除整行的快捷键是:Ctrl + U
  • Vue2下判断有新消息来时以站内信方式在页面右下角弹出
  • AI语言模型的技术之争:DeepSeek与ChatGPT的架构与训练揭秘
  • 网络安全中的account和audit区别
  • Visual Studio 使用 “Ctrl + /”键设置注释和取消注释
  • 【密评】 | 商用密码应用安全性评估从业人员考核题库(23)
  • 【MySQL】幻读 案例分析
  • 10bit VS 8bit 视频:色彩深度的较量,谁才是视觉盛宴的王者?
  • 讲解下MySql的外连接查询在SpringBoot中的使用情况
  • 蓝桥杯试题:归并排序
  • 物联网(IoT)如何与人工智能(AI)的结合
  • 一致性Hash算法延伸至Redis分片扩容使Lua脚本失效如何解决