Qt pro项目文件属性

一.Qt pro项目文件属性介绍

Qt项目的.pro文件是项目管理文件,用于记录项目设置和组织管理项目包含的文件。以下是一些主要属性及其介绍:

  1. QT: 指定项目使用的Qt模块。例如,QT += core gui表示项目中加入core和gui模块。如果使用到数据库操作,则需要添加sql模块,如QT += sql
  2. greaterThan(QT_MAJOR_VERSION, 4): 这是一个条件判断,用于检查Qt版本。如果Qt的主版本号大于4,则执行后面的语句。例如,greaterThan(QT_MAJOR_VERSION, 4): QT += widgets表示如果Qt版本大于4,则添加widgets模块。
  3. TARGET: 指定生成的目标文件名,通常与项目名称相同。
  4. TEMPLATE: 指定项目的模板类型,如app表示创建应用程序。
  5. SOURCES: 列出项目中所有的源文件,可以使用相对路径或绝对路径,并且可以包含空格和特殊字符。例如,SOURCES += \main.cpp \widget.cpp表示项目中包含main.cpp和widget.cpp两个源文件。
  6. HEADERS: 列出项目中所有的头文件,使用方法与SOURCES类似。
  7. FORMS: 列出项目中所有的表单文件,通常与用户界面设计相关。
  8. DEFINES: 用于预处理器定义,如DEFINES += QT_DEPRECATED_WARNINGS表示定义了QT_DEPRECATED_WARNINGS宏。
  9. INCLUDEPATH: 指定额外的头文件搜索路径。
  10. LIBS: 指定项目需要链接的外部库。
  11. CONFIG: 用于设置编译配置选项,如释放模式或调试模式。
  12. qmldir: 这个文件用于模块化管理QML文件。在QML项目中,qmldir文件定义了QML模块的名称、版本和包含的QML文件。它通常位于QML文件的根目录中,并且其内容指示了如何加载和使用QML模块。
  13. DISTFILES: 这个属性列出了在构建安装包时需要分发的文件列表。这些文件通常是除了项目生成的可执行文件和库文件之外的其他文件,如配置文件、资源文件等。
  14. CONFIG: 此属性用于指定工程配置和编译参数。例如,可以设置是否编译调试版本的可执行文件或库文件。CONFIG变量可以影响编译器的行为,比如开启或关闭某些特定的编译选项。
  15. DLLDESTDIR: 指定目标库文件放置的目录。这在构建项目时非常有用,尤其是当需要将库文件放置在非标准目录时。
  16. DESTDIR: 指定可执行文件放置的目录。这与DLLDESTDIR类似,但用于可执行文件而非库文件。
  17. RESOURCES: 列出项目中的资源文件,这些资源文件会被编译进最终的可执行文件中,可以通过Qt的资源系统在程序中访问。
  18. TRANSLATIONS: 指定项目中使用的语言翻译文件。这对于国际化(i18n)和本地化(l10n)非常重要,允许应用程序支持多种语言。

二. Qt pro项目文件属性使用示例

#引用平台文件及项目描述文件
include(../../platform.pri)
include(manager_view.pri)#TEMPLATE: 指定项目的模板类型,如app表示创建应用程序、lib表示库文件
TEMPLATE = lib#TARGET: 指定生成的目标文件名,通常与项目名称相同
TARGET = manager_view#QT: 指定项目使用的Qt模块。例如,QT += qml quick sql表示项目中加入qml、quick和数据库模块
QT += qml quick charts  core websockets multimedia network svguri = rc.qt.ManagerView
#DISTFILES: 这个属性列出了在构建安装包时需要分发的文件列表。
#这些文件通常是除了项目生成的可执行文件和库文件之外的其他文件,如配置文件、资源文件等。
DISTFILES = qmldir#DEFINES: 用于预处理器定义,如DEFINES += QT_DEPRECATED_WARNINGS表示定义了QT_DEPRECATED_WARNINGS宏
DEFINES += RC_LOG_MODEL_NAME=hmilogger#库文件版本号及库文件名称设置
VERSION = 1.0.0.20230918
QMAKE_TARGET_PRODUCT = "manager_view"
RC_LANG = 0x0004#CONFIG: 用于设置编译配置选项。more mem for resources
CONFIG += resources_bigCONFIG += qtquickcompiler skip_target_version_ext#CONFIG: 此属性用于指定工程配置和编译参数。
#例如,可以设置是否编译调试版本的可执行文件或库文件
CONFIG(debug, debug | release){SHUCHUDIR = debug
}else{SHUCHUDIR = release
}#自定义变量
PLUGROOT = RcPlugins#自定义dll输出目录
win32{#DLLDESTDIR: 指定目标库文件放置的目录。DLLDESTDIR = $$DLLDESTDIR/$$PLUGROOT/$$replace(uri, \., /)#LIBS: 指定项目需要链接的外部库LIBS += $$PWD/../../../lib/$$TARGET_PLATFORM/$$SHUCHUDIR/unit_settings.libLIBS += $$PWD/../../../lib/$$TARGET_PLATFORM/$$SHUCHUDIR/qtqrencode.libCOPYTODIR = $$DLLDESTDIR
}else{#DESTDIR: 指定可执行文件放置的目录DESTDIR = $$DESTDIR/$$PLUGROOT/$$replace(uri, \., /)#LIBS: 指定项目需要链接的外部库LIBS += -L$$PWD/../../../bin/$$TARGET_PLATFORM/$$SHUCHUDIR -lunit_settingsLIBS += -L$$PWD/../../../bin/$$TARGET_PLATFORM/$$SHUCHUDIR -lqtqrencodeCOPYTODIR = $$DESTDIR
}#HEADERS: 列出项目中所有的头文件
HEADERS += \$$PWD/../src/onlineupdate.h \$$PWD/../src/settings.h#SOURCES: 列出项目中所有的源文件,可以使用相对路径或绝对路径,并且可以包含空格和特殊字符
SOURCES += \$$PWD/../src/onlineupdate.cpp \$$PWD/../src/settings.cpp#RESOURCES: 列出项目中的资源文件,这些资源文件会被编译进最终的可执行文件中,
#可以通过Qt的资源系统在程序中访问。
RESOURCES += \rc_device_manager_view.qrc#TRANSLATIONS: 指定项目中使用的语言翻译文件。
#这对于国际化和本地化非常重要,允许应用程序支持多种语言
TRANSLATIONS += ./RcConfigFiles/RcLanguage/manager_cn.ts \./RcConfigFiles/RcLanguage/manager_en.ts \./RcConfigFiles/RcLanguage/manager_ru.ts \#INCLUDEPATH: 指定额外的头文件搜索路径
INCLUDEPATH += $$PWD/../../../include/qtqrencode \$$PWD/../../../include/curl \$$PWD/../../../include#_PRO_FILE_PWD_代表工程文件(.pro文件)所在的目录路径
#而$$COPYTODIR代表将要复制到的目标目录
#如果这两个变量的值不相等,那么条件表达式的结果为真,否则为假。
#主要进行资源文件复制:在构建过程中,可能需要将一些资源文件复制到输出目录
!equals(_PRO_FILE_PWD_, $$COPYTODIR) {copy_qmldir.target = $$COPYTODIR/qmldir #会自动将qmldir文件复制到构建输出目录中。这样,应用程序就可以正确地加载和使用QML模块了。copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldircopy_qmldir.commands = $(COPY_FILE) "$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)" "$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)"QMAKE_EXTRA_TARGETS += copy_qmldirPRE_TARGETDEPS += $$copy_qmldir.target
}qmldir.files = qmldir
unix {installPath = $$[QT_INSTALL_QML]/$$replace(uri, \., /)qmldir.path = $$installPathtarget.path = $$installPathINSTALLS += target qmldir
}

知识点补充:

 Qt项目的.pro文件中,可以使用DEFINES关键字来定义自定义变量。

这些变量可以在项目中的其他部分使用,例如在源代码中引用它们或在构建过程中使用它们。

要定义一个自定义变量,请按照以下步骤进行操作:

  1. 打开您的Qt项目的.pro文件。
  2. 在文件中找到适当的位置,通常是在文件的开头或结尾处。
  3. 添加以下行来定义自定义变量:
//pro文件
DEFINES = MY_VARIABLE//现在,您可以在项目中的其他部分使用这个自定义变量。例如,在源代码中,您可以使用以下方式引用它:
//cpp文件
#ifdef MY_VARIABLE// 使用MY_VARIABLE变量的代码
#endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云COS - 前端上传文件到 COS 跨域问题

问题描述 原因分析 因为我本地的地址是:http://localhost:9528 而发送请求时的地址是:http://132-1307119153.cos.ap-beijing.myqcloud.com/tu.jpg 域名不同,自然而然就出现了跨域的问题! 解决方案 先点击对象存储 - 安全设置…

C#如何从上次窗体关闭的位置打开窗体

目录 1.操作方法 (1)Location属性 (2)读写注册表 (3)SetValue方法 (4)命名空间 2.示例 实际开发中,有很多软件都有一个通用的功能,即从上次关闭位置启动…

mysql 事务基本介绍

目录 命令小结 一 MySQL事务的概念 (一)事务介绍 (二)事务特点 (三)事务的ACID特点 1,原子性 1.1 原子性具体形容 1.2 原子性案例 2 ,一致性 2.1一致性具体介绍 2.2…

《数字集成电路物理设计》学习笔记(持续更新中)

参考书籍: 《数字集成电路物理设计》pdf下载百度云链接: 链接: https://pan.baidu.com/s/1jOD54q_f9KLhfX6InabTRA?pwd8888 提取码: 8888 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v8的分享 目录 第1章 集…

C++ set 、unordered_set 删除

erase() 语法格式 set_name.erase(element);//删除 set 容器中值为 val 的元素name.erase(iterator position);//删除 position 迭代器指向的元素name.erase(iterator start, iterator end);//删除 [start,end) 区间内的所有元素示例 set<int> myset{1,2,3,4,5}; myse…

Vue 常见面试题(一)

目录 1、Vue 的最大的优势是什么&#xff1f;&#xff08;必会&#xff09; 2、Vue 和 jQuery 两者之间的区别是什么&#xff1f;&#xff08;必会&#xff09; 3、MVVM 和 MVC 区别是什么&#xff1f;哪些场景适合&#xff1f;&#xff08;必会&#xff09; 1、基本定义 2…

索尼下一代游戏主机PS5将于11月20日发售

索尼下一代游戏机PS5将于2020年11月20日发布。据悉&#xff0c;这款游戏机的售价可能会达到499美元&#xff08;约合人民币3500元&#xff09;。 我们知道游戏主机的价格低于游戏PC的价格。 既然PS5的主要硬件配置已经公开&#xff0c;那么现在配置一台同样配置的游戏PC需要多少…

WSL2的安装步骤

WSL2&#xff08;Windows Subsystem for Linux 2&#xff09;是微软公司开发的一项创新性技术&#xff0c;它在Windows操作系统上提供了一个完整的Linux内核&#xff0c;并允许用户在Windows环境中运行Linux发行版。之前想在Windows上使用Linux系统必须先安装VirtualBox或VMWar…

实战whisper语音识别第一天,部署服务器,可远程访问,实时语音转文字(全部代码和详细部署步骤)

Whisper是OpenAI于2022年发布的一个开源深度学习模型&#xff0c;专门用于语音识别任务。它能够将音频转换成文字&#xff0c;支持多种语言的识别&#xff0c;包括但不限于英语、中文、西班牙语等。Whisper模型的特点是它在多种不同的音频条件下&#xff08;如不同的背景噪声水…

聊聊功率器件(氮化镓,碳化硅)

氮化镓和碳化硅是两种具有独特性质和广泛应用的无机物。下面将尽可能详细地解释它们的定义、应用、研究热点以及对我们的价值。 1&#xff0c;氮化镓 氮化镓&#xff08;GaN&#xff09;是一种由氮和镓元素组成的化合物&#xff0c;具有直接能隙的半导体特性。其结构类似于纤…

多线程基础 -概念、创建、等待、分离、终止

文章目录 一、 线程概念1. 什么是线程2. 线程的优点3.线程的缺点4. 线程异常5. 线程用途 二、 Linux进程VS线程1. 进程和线程2. 进程和线程的地址空间3. 进程和线程的关系 三、Linux线程控制1. POSIX线程库2. 线程创建3. 线程ID及进程地址空间布局4. 线程终止5. 线程等待6. 线程…

故障诊断 | 一文解决,RBF径向基神经网络的故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述

专业140+总分410+南京大学851信号与系统考研经验南大电子信息与通信集成,电通,真题,大纲,参考书。

今年分数出来还是有点小激动&#xff0c;专业851信号与系统140&#xff08;感谢Jenny老师辅导和全程悉心指导&#xff0c;答疑&#xff09;&#xff0c;总分410&#xff0c;梦想的南大离自己越来越近&#xff0c;马上即将复试&#xff0c;心中慌的一p&#xff0c;闲暇之余&…

#Linux(权限管理)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09; &#xff08;2&#xff09;-开头代表普通文件 划分为三组&#xff1a; rw- rw- r-- rw-: 文件拥有…

蓝桥杯-体育健将-CPP-贪心

目录 一、题目描述&#xff1a; 二、整体思路&#xff1a; 三、代码&#xff1a; 一、题目描述&#xff1a; 二、整体思路&#xff1a; 要在k分钟内拿最多的金牌&#xff0c;就意味着要参加尽可能多的项目&#xff0c;因此就要选择耗时(比赛时间和休息时间)最少的项目先预处…

【隐私计算实训营003详解隐私计算框架及技术要点】

1. 隐语架构一览 1.1 隐语架构 隐语架构通常指的是一种面向隐私保护计算的软件框架或解决方案&#xff0c;它采用了密码学、可信执行环境&#xff08;TEE&#xff09;、多方安全计算&#xff08;MPC&#xff09;等多种隐私保护技术来实现在数据加密状态下进行计算&#xff0c;…

API调试管理工具Postman下载及操作介绍

1.下载安装postman地址&#xff1a;https://www.getpostman.com/downloads/ 2.创建项目 3.创建请求API 然后点击save保存api 4.用一个变量保存主域名&#xff0c;方便后续操作 就类似下面的baseurl 5.创建新环境 6.添加变量&#xff08;如添加本地测试环境url——ba…

[综述笔记]A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis

论文网址&#xff1a;Frontiers | A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis (frontiersin.org) 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论…

随笔】Git -- 常用命令(四)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

JavaScript高级(十四)----prmise

异步请求的处理方式 回调函数 所谓的回调函数就是函数作为参数的传递&#xff0c;在一个函数内部调用另一个函数&#xff0c;调用的同时可以把内部函数的数据传递出来&#xff0c;他的使用场景就是异步操作&#xff0c;数据需要等待一段时间才能返回的情况下可以使用回调函数…