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

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

相关文章:

  • 好就业三种专业#信息安全#云计算#网络工程
  • C数据类型(C语言)---变量的类型决定了什么?
  • cannot find -xml2: No such file or directory的解决方法
  • 汇编语言中的MVC
  • 阿里云轻量应用服务器和ECS服务器有啥区别?2024年整理对比表
  • webpack从零开始搭建vue项目
  • void QLayout::addItem(QLayoutItem *item)
  • 第四章 网络层——练习题、408真题
  • uniapp——第3篇:自定义组件、组件间传数据
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • RabbitMQ详细讲解
  • Debezium vs OGG vs Tapdata:如何实时同步 Oracle 数据到 Kafka 消息队列?
  • Python每日三道经典面试题(十七)
  • 物联网的介绍
  • SQLiteC/C++接口详细介绍sqlite3_stmt类(四)
  • 【剑指offer】让抽象问题具体化
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Angular 4.x 动态创建组件
  • django开发-定时任务的使用
  • JavaScript函数式编程(一)
  • Java编程基础24——递归练习
  • oschina
  • Sass Day-01
  • Spark学习笔记之相关记录
  • 编写符合Python风格的对象
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信小程序设置上一页数据
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​比特币大跌的 2 个原因
  • #{}和${}的区别?
  • #include
  • #前后端分离# 头条发布系统
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (26)4.7 字符函数和字符串函数
  • (3)(3.5) 遥测无线电区域条例
  • (bean配置类的注解开发)学习Spring的第十三天
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (八)c52学习之旅-中断实验
  • (办公)springboot配置aop处理请求.
  • (二)windows配置JDK环境
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)拼包函数及网络封包的异常处理(含代码)
  • ... 是什么 ?... 有什么用处?
  • .net 程序发生了一个不可捕获的异常
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .NET正则基础之——正则委托
  • .Net中wcf服务生成及调用
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /etc/shadow字段详解
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @RequestMapping-占位符映射
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504