Qt项目通过.pri文件将众多文件按功能模块分类显示,开发大型项目必备

news2025/4/3 17:08:23

Qt项目通过.pri文件将众多文件按功能模块分类显示,开发大型项目必备

  • Chapter1 Qt项目通过.pri文件将众多文件按功能模块分类显示,开发大型项目必备($$$)
  • Chapter2 在Qt项目中添加pri文件
    • 前言
    • 创建pri文件的步骤
      • 一、创建Qt项目
      • 二、创建pri空文件
      • 三、调试
  • Chapter3 Qt 之 pro 配置详解
  • Chapter4 Qt之pro配置多个子工程/子模块
    • 简述
    • 配置、效果
    • 多工程
    • 多模块
  • Chapter5 qt5.9 子项目创建及qt项目管理($$$)
    • 前言
    • 创建目录
      • 创建一个子目录项目:
      • 添加一个子项目app
      • 添加lib库和dll库
      • 同样的步骤,添加dll
      • 添加src子项目
      • 设置编译目录和生成可执行目录
      • 设置执行编译顺序
      • 添加静态库工程
      • 设置生成动态库路径,可放在可执行文件路径:
      • 添加动态库
  • Chapter6 QT创建子目录项目,可以让项目组织成树形结构的示例:在项目中同时创建Application和第三方动态库(内部)($$$)
    • 1、新建子目录项目
    • 2、创建Application
    • 3、创建动态库
    • 4、Application项目添加动态链接库。
    • 5、测试


Chapter1 Qt项目通过.pri文件将众多文件按功能模块分类显示,开发大型项目必备($$$)

Chapter2 在Qt项目中添加pri文件

原文链接:https://blog.csdn.net/michip_lwx/article/details/104027914

前言

一般我们创建Qt项目工程的时候,都是直接把所有的项目,头文件和资源文件等全放入pro中,这样一来小的项目(只有少数几个文件)那种,你可能就会觉得没有什么,但是在一些中大型的开发项目当中,可能会有十几个,甚至几十个文件的开发项目中,我们看树形结构的文件时,就会感到很杂乱,pri文件的作用就尤为重要了。简单来说,pri文件就是把pro文件中的一部分放到pri文件中进行一个管理,类似头文件,进行分块管理,分担pro文件的一部分压力,这样一来pro文件看起来就不会显得很臃肿。

创建pri文件的步骤

对于初学者来说,如何创建pri文件也算是件蛮头疼的事,下面就简单讲讲创建pri文件的步骤。

一、创建Qt项目

首先按照原本创建Qt那样创建一个简单的QWidget的项目,如下图所示:
在这里插入图片描述
在这里插入图片描述

二、创建pri空文件

1、在创建的PriProTest工程下创建一个文件夹PriTest,并创建pritest.pri文本:
在这里插入图片描述
在这里插入图片描述
2、在pro中添加pri文件,像下面那样添加相应的代码,并ctrl+B,就会出现如下图所示情况:

QT       += core gui
 
include( ./PriTest/pritest.pri )
 

在这里插入图片描述

3、以上一步就已经成功添加一个pri文件了,就可以在PriTest文件夹下添加我们想要的一些C++资源或文件:
在这里插入图片描述

三、调试

1、在test.h文件随便写一个加法的调试方法,已验证pri文本能否起作用。

#ifndef TEST_H
#define TEST_H
 
#include <QWidget>
#include <QDebug>
 
class test : public QWidget
{
    Q_OBJECT
public:
    explicit test(QWidget *parent = nullptr);
 
public:
    static int add(int a, int b)
    {
        qDebug() << "a + b=" << a+b;
        return a+b;
    }
 
signals:
 
public slots:
};
 
#endif // TEST_H

2、在widget.cpp的构造函数中调用:

#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    //调试验证
    qDebug() << "调试...";
    test::add(4, 6);
}
 
Widget::~Widget()
{
    delete ui;
}

3、结果可用
在这里插入图片描述
以上就是简单的pri文本创建的过程。

Chapter3 Qt 之 pro 配置详解

https://blog.csdn.net/liang19890820/article/details/51774724

Chapter4 Qt之pro配置多个子工程/子模块

Qt之pro配置多个子工程/子模块

qt5.9 子项目创建及qt项目管理

QT创建子目录项目,可以让项目组织成树形结构的示例:在项目中同时创建Application和第三方动态库(内部)

======================================================================================

简述

进行Qt项目开发的时候,尤其是大型项目,经常涉及多工程/多模块问题,其主要思想还是模块化,目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。

配置、效果

在这里插入图片描述

多工程

如果需要管理多工程(pro),比如:库工程、界面工程,其中,每一个工程均可单独编译成功,但存在依赖关系。也就是说,lib2依赖于lib1,而UI依赖于lib2。

配置如下:
配置TEMPLATE为subdirs设置多工程
配置SUBDIRS,指定需要添加的工程模块
配置CONFIG为ordered指定顺序编译

例如:

TEMPLATE = subdirs
     
    #SUBDIRS += \
    #    SubProject3 \
    #    SubProject2 \
    #    SubProject
     
SUBDIRS +=
PWD/SubProject3/SubProject3.pro 
PWD/SubProject2/SubProject2.pro \
$$PWD/SubProject/SubProject.pro
     
CONFIG += ordered

多模块

延续多工程,如果某一个工程功能比较多,我们必然要进行模块化。例如:界面工程包含:登录界面、设置界面、主界面。。。这时,我们就可以使用pri模块化了。

include(PWD/Login/Login.pri)
include(PWD/Settings/Settings.pri)
include($$PWD/MainWindow/MainWindow.pri)

Chapter5 qt5.9 子项目创建及qt项目管理($$$)

原文链接:https://blog.csdn.net/wrzfeijianshen/article/details/77861855

前言

所有的课件可以去https://github.com/wrzfeijianshen/Courseware 下载哦

关于下载地址详见于:http://www.feijianshen.com/?p=57

或者http://blog.feijianshen.com/?p=57

工程组织结构和动态库引用,是c++作为一个项目开发的一个必要的知识领域。多工程多工作目录,库如何调用问题。

我从网上也找了几篇关于qt如何建立子项目等等的介绍,也不详细。如何先让小白跑起来,这才是重要一步,写代码多了,自然就成神了,第一步总得尝试。

首先了解下工程目录结构,并不是所有的,只是一个广泛的目录结构,大家可以先看看。

l app:可执行文件(界面代码)

l lib(Library ):库(外部调用)

l src: 存放软件所有的源代码(核心代码)

l bin:编译后,生成的可执行文件,库目录

l make_bin:编译库文件目录(也可以不进行更改)

创建目录

首先我们创建一个总的项目文件夹:project:
在这里插入图片描述
qt版本为5.9.1

创建一个子目录项目:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击取消,已经创建一个空的项目工程了。
在这里插入图片描述
在这里插入图片描述

添加一个子项目app

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加lib库和dll库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同样的步骤,添加dll

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加src子项目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置编译目录和生成可执行目录

在这里插入图片描述
可执行目录是main_make/bin

在这里插入图片描述
设置构建项目路径,这个至关重要。
在这里插入图片描述
这样子所有的编译出来的文件都存放在make_bin里了。
在这里插入图片描述
设置生成可执行文件目录执行(运行)目录

这个可执行文件在构建编译后的文件目录即在main_make文件夹下。
在这里插入图片描述
那么main.pro编译后的目录在main_make/目录下

那么app.pro所编译的目录在,main_make/app目录下

所以

DESTDIR = …/bin/MyDebug# 指定生成的应用程序放置的目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置执行编译顺序

静态库和动态库先编译再编译可执行界面
在这里插入图片描述

添加静态库工程

在这里插入图片描述
可以单独再建立好多的项目,再建立库,也可以只建立一个库。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置生成动态库路径,可放在可执行文件路径:

那add.pro编译后的文件路径则是

main_make/lib/add目录下

DESTDIR += …/…/bin/MyDebug# 指定生成的应用程序放置的目录
在这里插入图片描述
在这里插入图片描述
可以先写一段代码测试功能

在Add类库中写一函数

在这里插入图片描述
在这里插入图片描述
在界面项目中,指定库的头文件路径。
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述
这样子已经跑起来了。
在这里插入图片描述

添加动态库

操作和静态库类似
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
指定生成的dll路径。
在这里插入图片描述
在app.pro中,指定头文件和库名称。
在这里插入图片描述
在动态库中添加一个函数,进行测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里算是演示成功了,不过是简单的一个小小demo。qt的多项目多多练习终能成为大才。

Chapter6 QT创建子目录项目,可以让项目组织成树形结构的示例:在项目中同时创建Application和第三方动态库(内部)($$$)

1、新建子目录项目

文件》新建文件或项目》其他项目》子目录项目:
在这里插入图片描述
点击Choose,设置名称和创建路径。
在这里插入图片描述

后面一直点击下一步直至子目录项目创建完成后:
在这里插入图片描述

2、创建Application

在上一步创建完成后弹出的新建子项目框中,Application》Qt Widgets Application
在这里插入图片描述

点击Choose,设置名称(创建路径默认即可)
在这里插入图片描述
没有特殊需要的话就一直下一步直至Application创建完成:
在这里插入图片描述

3、创建动态库

项目目录名称右击》新子项目:
在这里插入图片描述
Library》C++库
在这里插入图片描述
点击Choose,设置名称(创建路径默认即可)
在这里插入图片描述
没有特殊需要的话就一直下一步直至Application创建完成:
在这里插入图片描述

4、Application项目添加动态链接库。

此时主项目下有两个子项目,Application需要连接动态链接库才能调用,所以要连接。

Application项目目录名称右击》添加库:
在这里插入图片描述
内部库》下一步:注意:是内部库
在这里插入图片描述
在这里插入图片描述
下一步完成即可,添加库会在Application项目pro文件中生成下面几行代码:
在这里插入图片描述
下面先点击小锤子构建,然后测试就可以了!

5、测试

添加上头文件,在动态库项目中添加一个求和的成员函数,进行测试
在这里插入图片描述

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

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

相关文章

SpringCloud学习笔记-Nacos服务分级存储模型

Nacos服务分级存储模型 一级是服务&#xff0c;例如userservice二级是集群&#xff0c;例如杭州或上海三级是实例&#xff0c;例如杭州机房的某台部署了userservice的服务器 微服务互相访问时&#xff0c;应该尽可能访问同集群实例&#xff0c;因为本地访问速度更快。当本集…

创新YOLOv8改进:结合全新可变形大核注意力(D-LKA Attention)实现多尺度目标涨点

🔥🔥🔥 提升多尺度目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: 🐤🐤�…

寻找AI时代的关键拼图,从美国橡树岭国家实验室读懂AI存力信标

超算&#xff0c;是计算产业的明珠&#xff0c;是人类探索未知的航船。超算的发展与变化&#xff0c;不仅代表着各个国家与地区间的科技竞争力&#xff0c;更将作为趋势风向标&#xff0c;影响整个数字化体系的走向。 在目前阶段&#xff0c;超算与AI计算的融合是大势所趋。为了…

C# GPEN-BFR 图像修复

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {pu…

【部署】Linux Shell脚本部署java程序 (jar包)

文章目录 前言 前言 #!/usr/bin/env bash #可变参数变量#部署磁盘路径 baseDirPath/data/apps/java/smj-exchange-upload #jar包名称 packageNamesmj-exchange-upload.jar #命令启动包名 xx.jar的xxpid #进程pid#检测pid getPid(){echo "检测状态-----------------------…

Python爬虫:某书平台的Authorization参数js逆向

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…

深势科技基于 Serverless 容器为科研人员打造高效的开发平台

作者&#xff1a;李样兵、刘杉、木环、玖宇、鼎岳 云端的科学研究&#xff0c;AI for Science 新范式 以往科学家们的科研工作需要经过大量实验的重复验证、复杂数学计算&#xff0c;以及长年累月的不断试错和苦苦探索。云计算基础服务的发展和人工智能技术 AI 的兴起&#x…

自动驾驶学习笔记(五)——绕行距离调试

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 调试内容 打开在线编辑器 打开pl…

【Docker 内核详解】namespace 资源隔离(五):User namespaces

【Docker 内核详解 - namespace 资源隔离】系列包含&#xff1a; namespace 资源隔离&#xff08;一&#xff09;&#xff1a;进行 namespace API 操作的 4 种方式namespace 资源隔离&#xff08;二&#xff09;&#xff1a;UTS namespace & IPC namespacenamespace 资源隔…

narak靶机

信息搜集 主机发现 端口扫描 靶机开放了22/ssh , 80/http端口服务 UDP协议扫描端口 没有啥发现 综合扫描 web渗透 web页面 登陆80web页面&#xff0c;进行信息收集&#xff0c;在源代码和页面中似乎都没发现什么信息 web目录扫描 其中webdav很有意思&#xff0c;我们看看…

AutoSar CP学习概要

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…

每个后端都应该了解的OpenResty入门以及网关安全实战

简介 在官网上对 OpenResty 是这样介绍的&#xff08;http://openresty.org&#xff09;&#xff1a; “OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台&#xff0c;其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩…

CV计算机视觉每日开源代码Paper with code速览-2023.10.13

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构】CHIP: Contrastive Hierarchical Image …

计算机系统概述(机组第一章)

补充&#xff1a; 1.1.1 计算机软硬件概念&&计算机系统的层次结构 思维导图 除了思维导图中的三个层级以外还包括两个层级 在实际机器下还可以延伸一级微程序机器&#xff0c;即将实际机器执行的指令翻译成一组微指令构成一个微程序。为程序机器执行完一个微程序在进…

Android MediaCodec 框架 基于codec2

系列文章的目的是什么&#xff1f; 粗略&#xff1a; 解码需要哪些基础的服务&#xff1f;标准解码的调用流程&#xff1f;各个流程的作用是什么&#xff1f;解码框架的层次&#xff1f;各个层次的作用&#xff1f; 细化&#xff1a; 解码参数的配置&#xff1f;解码输入数…

【iOS】——用单例类封装网络请求

文章目录 一、JSONModel1.JSONModel的简单介绍2.JSONModel的使用 二、单例类和Block传值 一、JSONModel 1.JSONModel的简单介绍 JSONModel一个第三方库&#xff0c;这个库用来将网络请求到的JSON格式的数据转化成Foundation框架下的Model类的属性&#xff0c;这样我们就可以直…

冠军方案!2023第二届广州·琶洲算法大赛

Datawhale干货 作者&#xff1a;唐楚柳&#xff0c;算法工程师&#xff0c;冠军选手 1.简介 大家好我是‍Alex‍&#xff0c;31岁&#xff0c;现为一名图像算法工程师&#xff0c;主要研究方向是计算机视觉图像识别。工作之余的研究兴趣包括ocr&#xff0c;aigc&#xff0c;ll…

[自学记录06|*Animation]四元数、死锁与方位插值

一、前言 还记得在很久以前不知道什么时候&#xff0c;看到过一个TA的面经&#xff0c;里面提到了四元数和万向锁&#xff0c;当时自己也查了一些资料&#xff0c;但是看的也是云里雾里&#xff0c;恰巧这两天学校的动画原理课讲到了这&#xff0c;打算整理一下做个小结。 二、…

【Linux学习笔记】 - 项目自动化工具make/Makefile的使用

一、背景知识 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力。一个工程中的源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中。makefile定义了一系列的规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪些文件需…

芯片学习记录SN74AHC1G14DBV

SN74AHC1G14DBV 芯片介绍 SN74AHC1G14器件是单个逆变器门。该器件执行布尔函数Y /A.The器件作为独立的逆变器门发挥作用&#xff0c;但由于施密特作用&#xff0c;门可能对正&#xff08;VT&#xff09;和负&#xff08;VT−&#xff09;信号具有不同的输入阈值电平。 引脚信…