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

QT进阶---------pro项目文件中的常用命令 (第三天)

1、命令一   决定exe可执行程序的生成路径CONFIG

作用:不使用默认路径,方便移植

CONFIG(debug, debug|release) {DESTDIR = $$_PRO_FILE_PWD_/../../../debugXXXsystem
} else {DESTDIR =$$_PRO_FILE_PWD_/../../../realeaseXXXsystem
}

是用于 Qt 项目的配置管理,其中涉及到了 Qt 的构建系统中的 CONFIG 变量。这段代码的作用是根据当前的构建类型来设置 DESTDIR(目标目录)的路径。

具体来说:

  • CONFIG(debug, debug|release) 表示如果当前构建类型是 debug 或者同时包含 debug 和 release,则执行对应的代码块。
  • { ... } else { ... } 表示在满足条件时执行第一个代码块,否则执行第二个代码块。

因此,这段代码的意思是:

如果当前构建类型为 debug 或者同时包含 debug 和 release,则将 DESTDIR 设置为 $$_PRO_FILE_PWD_/../../../debugxxxsystem;否则将 DESTDIR 设置为 $$_PRO_FILE_PWD_/../../../releasexxxsystem

其中 $$_PRO_FILE_PWD_ 是 Qt 的内置变量,表示项目文件的当前目录。因此,DESTDIR 将会根据不同的构建类型设置不同的路径。

debugxxxsystem是文件夹,相对路径是相对pro的文件的路径而言的。

2、命令二  添加第三方库,以添加c++的openCV库为例

#添加opencv的库
#使用$$PWD变量来创建相对路径
#$$PWD变量所创建的相对路径是相对于Qt项目文件(通常是.pro文件)
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../common/open2019qt/bin/ -lopencv_world412
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../common/open2019qt/bin/ -lopencv_world412dINCLUDEPATH += $$PWD/../../common/open2019qt/include
DEPENDPATH += $$PWD/../../common/open2019qt/include

这段代码是在Qt项目文件(.pro文件)中用于添加OpenCV库的支持。让我解释每一行的含义:

  1. win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../common/open2019qt/bin/ -lopencv_world412

    • win32:CONFIG(release, debug|release): 这是一个条件语句,指定只在Windows平台下release模式或debug/release混合模式下执行。
    • LIBS += -L$$PWD/../../common/open2019qt/bin/ -lopencv_world412: 这一行指定了链接到OpenCV库的命令。-L$$PWD/../../common/open2019qt/bin/添加了OpenCV库的路径,-lopencv_world412指定了要链接的库文件名。
  2. else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../common/open2019qt/bin/ -lopencv_world412d

    • else:win32:CONFIG(debug, debug|release): 这是条件语句的另一部分,指定在Windows平台下debug模式执行。
    • LIBS += -L$$PWD/../../common/open2019qt/bin/ -lopencv_world412d: 这一行指定了链接到OpenCV调试版本库的命令。与前一个命令类似,但使用的是带有“d”后缀的库文件(例如,opencv_world412d)。
  3. INCLUDEPATH += $$PWD/../../common/open2019qt/include

    • 这一行将OpenCV的头文件路径添加到项目中,以便编译器可以找到并包含OpenCV的头文件。
  4. DEPENDPATH += $$PWD/../../common/open2019qt/include

    • 这一行类似于INCLUDEPATH,但是它指定了编译器依赖的路径,以便在项目重新构建时能够检测到头文件的更改。

总体来说,这段代码的作用是在Qt项目中配置OpenCV库的链接和包含路径,以便项目能够使用OpenCV的功能。

3、命令三  代码通过子项目添加pri,例如添加QXlsx的库

# QXlsx code for Application Qt project
QXLSX_PARENTPATH=./QXlsx/         # current QXlsx path is . (. means curret directory)
QXLSX_HEADERPATH=./QXlsx/header/  # current QXlsx header path is ./header/
QXLSX_SOURCEPATH=./QXlsx/source/  # current QXlsx source path is ./source/
include(./QXlsx/QXlsx.pri)

这段代码是一个在Qt项目中使用 QXlsx 库的示例,其中包含了一些路径的定义和 include 命令。

  • QXLSX_PARENTPATH=./QXlsx/:指定 QXlsx 库的主目录路径为当前目录下的 QXlsx 文件夹。

  • QXLSX_HEADERPATH=./QXlsx/header/:指定 QXlsx 库头文件的路径为当前目录下的 QXlsx/header/ 文件夹。

  • QXLSX_SOURCEPATH=./QXlsx/source/:指定 QXlsx 库源文件的路径为当前目录下的 QXlsx/source/ 文件夹。

  • include(./QXlsx/QXlsx.pri):包含 QXlsx.pri 文件,该文件应该在 ./QXlsx/ 目录下。这个文件通常包含了配置 QXlsx 库的编译设置以及其他必要的定义。

总的来说,这段代码的目的是在 Qt 项目中引入并配置 QXlsx 库,以便在项目中使用它提供的功能。

       这三种命令一般是我在项目中用的比较多的,当然还有一些其他的命令,用的比较少。

4、用的比较少的命令(简单介绍)

  1. #指定生成的应用程序名:

TARGET = QtDemo

  1. #工程中包含的头文件

HEADERS += include/painter.h

  1. #工程中包含的.ui设计文件

FORMS += forms/painter.ui

  1. #工程中包含的源文件

SOURCES += sources/main.cpp sources

  1. #工程中包含的资源文件

RESOURCES += qrc/painter.qrc

  1. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

这条语句的含义是,如果QT_MAJOR_VERSION大于4(也就是当前使用的Qt5更高版本)需要增加widgets模块。如果项目仅需支持Qt5也可以直接添加“QT += widgets”一句。不过为了保持代码兼容,最好还是按照QtCreator生成的语句编写。

  1. #配置信息

CONFIG用来告诉qmake关于应用程序的配置信息。

CONFIG += c++11 //使用c++11的特性

在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项更安全。

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

相关文章:

  • php常用设计模式应用场景及示例
  • 浏览器与服务器通信过程(HTTP协议)
  • Pytorch搭建AlexNet 预测实现
  • 笔记:使用parfile进行的数据导入导出
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的行人跌倒检测系统(深度学习+UI界面+完整训练数据集)
  • Ubuntu 14.04:PaddleOCR基于PaddleServing的在线服务化部署(失败)
  • Java JUC 笔记(2)
  • webpack5高级--02_提升打包构建速度
  • MAC M芯片 Anaconda安装
  • 【JS】自动下拉网页刷新,当出现指定关键字,就打印出来
  • 中兴通讯联手新疆移动,开通全疆首个乡农场景700M+900M双频双模基站
  • 爬虫案例4: parsel 模块的运用
  • 数据结构·复杂度
  • 数学建模理论与实践国防科大版
  • Yakit爆破模块应用
  • 【3GPP】【核心网】【5G】NAS连接管理和UE注册管理状态(超详细)
  • 细粒度IP定位参文2(Corr-SLG):A street-level IP geolocation method (2021年)
  • Mac上使用M1或M2芯片的设备安装Node.js时遇到一些问题,比如卡顿或性能问题
  • 学习vue3第四节(ref以及ref相关api)
  • 关于电脑无法开启5G频段热点的解决方案
  • 清理磁盘空间 - Win系统
  • 科技革新的引擎-2024年AI辅助研发趋势
  • 【PTA】L1-021 L1-022 L1-023 L1-024 L1-025(C)第四天
  • Stable Diffusion 如何写好提示词(Prompt)
  • 树莓派Py程序加入开机自启
  • Java EasyExcel注解详解和实战案例
  • AHU 汇编 实验二
  • Spring Boot单元测试与热部署简析
  • 3.12练习题解
  • Java中实现双向链表