qt6开发环境配置杂记

很多同学不重视环境配置问题,这是工程问题,实际工作中,如果不真正搞懂环境配置,后期可能会遇到各种坑。

QT是一套开发框架,最终要翻译成c++去执行。总体而言,就是下面三张框图:

 (工程结构)

查看qt版本:

(总图)

查看编译器路径:

 Qt库文件目录的结构通常包括多个关键部分,这些部分共同构成了Qt框架的完整目录结构。以下是一个清晰的Qt库文件目录结构的描述:

  1. 根目录
    • 通常Qt会被安装在一个特定的根目录下,例如D:\Qt(在Windows系统中)或/usr/local/Qt(在Linux系统中)。
  2. 版本和编译器相关目录
    • Qt可能包含多个版本,每个版本下又可能针对不同编译器有不同的子目录。例如,D:\Qt\6.2.4\mingw_64是针对MinGW编译器的Qt 6.2.4版本。
  3. 主要子目录
    • bin:包含Qt的所有可执行文件和命令行工具。例如,qmake(项目构建工具)、designer(UI设计工具)、assistant(帮助文档查看工具)等。
    • include:包含Qt库的头文件。这些头文件定义了Qt的类和函数接口,按模块分类,如QtCoreQtGuiQtWidgets等。
    • lib:包含Qt的库文件和模块。这些文件是Qt框架的核心部分,可能是动态链接库(如.dll.so)或静态链接库(如.lib.a)。
    • mkspecs:包含平台特定的编译器设置和配置文件,用于指导qmake如何为不同的平台生成Makefile
    • plugins:包含Qt的插件,这些插件扩展了Qt的功能。插件按类型分类,如platforms(平台插件)、imageformats(图像格式插件)等。
    • qml:包含QML模块和组件,QML是Qt的一种声明式语言,用于构建动态用户界面。
    • translations:包含Qt的翻译文件,支持多语言界面。
    • examples:包含Qt的示例项目和示例代码,帮助开发者学习和使用Qt。
    • doc:包含Qt的文档文件,包括API参考、教程等。
  4. 特定于编译器的子目录(如D:\Qt\6.2.4\mingw_64):
    • 在这些子目录下,通常会有与上述主要子目录相对应的目录结构,但内容特定于该编译器版本。
  5. 其他工具目录
    • 例如,D:\Qt\Tools\mingw1120_64可能包含MinGW工具集,如编译器g++、链接器ld等。
  6. 附加目录(根据项目或开发需要):
    • 例如,config目录可能包含项目的配置文件信息。
    • resource目录可能包含资源文件,如图片、图标等。
    • 当项目涉及多个工程时,为了方便统一管理,生成的库文件可能会指定生成到统一的文件夹路径下,如lib目录。

以上目录结构是一个典型的Qt安装目录布局,但具体的结构可能会因Qt版本、操作系统和安装选项的不同而有所变化。

项目编译调试输出配置相关:

上图的含义:

在 Qt Creator 中,当您为项目选择构建套件(通常是一个编译器和相关的工具链)时,您还会看到不同的构建配置或“Profile”(配置文件)。在您提到的 mingw64-bit 编译器套件下,常见的构建配置文件包括 DebugReleaseRelease with Debug Information 和 Minimum Size Release。这些配置文件决定了构建时使用的编译器和链接器设置,从而影响生成的可执行文件的大小、速度和调试能力。

下面是这些配置文件的简要说明:

  1. Debug

    • 这是一个用于调试的配置。它通常包含没有优化的代码,并且包含完整的调试信息(例如变量名、行号等),以便您可以使用调试器(如 GDB)来逐步执行程序、检查变量值等。
    • 由于没有优化并且包含调试信息,生成的可执行文件通常比 Release 版本大得多,并且运行速度可能较慢。
  2. Release

    • 这是一个用于发布应用程序的配置。它使用编译器优化来生成尽可能小且运行尽可能快的代码。
    • 由于不包含调试信息,并且代码已经过优化,生成的可执行文件通常比 Debug 版本小得多,并且运行速度更快。
    • 然而,由于缺少调试信息,Release 版本可能难以调试。
  3. Release with Debug Information

    • 这是一个在 Release 版本和 Debug 版本之间取得平衡的配置。它使用编译器优化来生成快速且小的代码,但同时还包含调试信息。
    • 这使得您可以在发布应用程序之前进行一些基本的调试,但生成的可执行文件仍然比 Debug 版本小,并且运行速度更快。
    • 这种配置通常用于发布前的最终测试。
  4. Minimum Size Release

    • 这是一个专注于生成尽可能小的可执行文件的配置。它可能使用额外的编译器优化和链接器设置来减小代码大小。
    • 由于专注于代码大小,这种配置可能会牺牲一些运行速度。
    • 这种配置通常用于嵌入式系统或需要节省磁盘空间的场景。

请注意,这些配置的确切行为可能取决于您使用的 Qt 版本、编译器版本以及您可能自定义的任何构建设置。上述描述是一个关于这些配置文件如何工作的基本概念。

环境变量配置:

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

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

相关文章

Spring底层原理之bean的加载方式一 用XML方式声明bean 自定义bean及加载第三方bean 2024详解

目录 用XML方式声明bean 首先我们创建一个空的java工程 我们要导入一个spring的依赖 注意在maven工程里瞅一眼 我们创建一个业务层接口 还有四个实现类 我们最初的spingboot生命bean的方式是通过xml声明 我们在resources文件夹下创建一个配置文件 我们书写代码 首先初…

AI Agent:技术原理与未来趋势

在人工智能的快速发展中,AI Agent作为一项创新技术,正逐渐成为研究和应用的热点。AI Agent不仅仅是执行命令的程序,它们能够感知环境、做出决策并采取行动,展现出类似人类的群体协作能力。本文将探讨AI Agent的技术原理、开源框架…

使用vite官网和vue3官网分别都可以创建vue3项目

问: npm init vitelatest 和 npm create vuelatest创建的vue3项目有什么区别? 回答: npm init vitelatest 和 npm create vuelatest 分别是使用 Vite 和 Vue CLI 工具创建 Vue 项目的两种方式,它们之间有几个主要区别: 1. **构建工具:** …

忍法:声音克隆之术

前言: 最近因为一直在给肚子里面的宝宝做故事胎教,每天(其实是看自己心情抽空讲下故事)都要给宝宝讲故事,心想反正宝宝也看不见我,只听我的声音,干脆偷个懒,克隆自己的声音&#xf…

Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程

方法一:PHP_diseval_extension禁用 Linux CentOS 禁用php的eval函数详细图文教程_centos php 禁用 eval-CSDN博客 这个方法make报错,懒得费时间处理,直接用第二种 方法二:suhosin禁用 不支持PHP8,官方只支持PHP7以下…

【电源专题】为什么带电量计芯片的电池MOS保护要放在高侧

在实际的电量计电池开发中,发现一个很奇怪的现象。传统电池保护IC往往都是将充电保护和放电保护的两个MOS管放在低侧的。如下所示是文章:【电源专题】读一读单节锂电池保护IC规格书 可以看到M1和M2两个MOS管是放在PB-(也就是电池的负端),我们叫做低端。 而BQ28Z610电…

目标检测常用涨点方法:注意力机制小结(空间注意力、通道注意力、CBAM等)

1.通道注意力 通道注意力(Channel Attention)是在通道维度上对输入数据进行学习,再对不同的通道分配相应的权重表示重要性,从而达到“分配注意力”的效果。SENet(Squeeze and Excitation networks) 是一个典型的使用通…

Swift宏的实现

上篇介绍了Swift宏的定义与生声明,本篇主要看看是Swift宏的具体实现。结合Swift中Codable协议,封装一个工具让类或者结构体自动实现Codable协议,并且添加一些协议中没有的功能。 关于Codable协议 Codable很好,但是有一些缺陷&…

yaklang window安装 vscode运行得到“hello world”

资源来源:旅程伊始:Yak 语言环境安装与搭建环境 | Yak Program Language 安装yak语言非常简单,管理员权限打开命令行运行以下命令: powershell (new-object System.Net.WebClient).DownloadFile(https://yaklang.oss-cn-beijing…

1085 PAT单位排行(测试点5)

solution 测试点5:总分是在每个学生加权后再取整,所以用来存学生分数的变量要用浮点型学校排序: 若成绩不同,则按成绩降序若成绩相同,人数不同,则按成绩升序若成绩和人数都相同,则按单位名升序…

理解GPT2:无监督学习的多任务语言模型

目录 一、背景与动机 二、卖点与创新 三、几个问题 四、具体是如何做的 1、更多、优质的数据,更大的模型 2、大数据量,大模型使得zero-shot成为可能 3、使用prompt做下游任务 五、一些资料 一、背景与动机 基于 Transformer 解码器的 GPT-1 证明…

NAS教程丨铁威马如何登录 SSH终端?

适用型号: 所有TNAS 型号 如您有特殊操作需要通过 SSH 终端登录 TNAS,请参照以下指引: (注意: 关于以下操作步骤中的"cd /"的指令,其作用是使当前 SSH/Telnet 连接的位置切换到根目录,以免造成对卷的占用.请不要遗漏它.) Windows…

数据分析的线上云端数据库搭建及Excel和Tableau连接

数据分析的线上云端数据库搭建及Excel和Tableau连接 SQL基础知识 线上SQL训练: SQlZOO: https://www.sqlzoo.net/wiki/SQL_Tutorial 牛客网SQL真题:https://www.nowcoder.com/ta/sql select,from,where, order by, limit, group by, having, substr(),…

【SpringBoot】SpringBoot使用mail实现登录邮箱验证

📝个人主页:哈__ 期待您的关注 目录 一、前期准备 1 开启邮箱服务 2 SpringBoot导入依赖 3 创建application.yml配置文件 4 创建数据库文件 5 配置redis服务 二、验证邮件发送功能 三、注册功能实现邮箱验证 1 创建User实体类 2 创建UserPa…

DEBOPIE框架:打造最好的ChatGPT交易机器人

本文介绍了如何利用 DEBOPIE 框架并基于 ChatGPT 创建高效交易机器人,并强调了在使用 AI 辅助交易时需要注意的限制以及操作步骤。原文: Build the Best ChatGPT Trading Bots with my “DEBOPIE” Framework 如今有大量文章介绍如何通过 ChatGPT 帮助决定如何以及在…

仓库管理系统12--供应商设置

1、添加供应商窗体 2、布局控件UI <UserControl x:Class"West.StoreMgr.View.SupplierView"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http://…

为什么前端传了token,后端一直获取不到?一直报跨域错误?

这是我的前端代码 这是我的后端拦截器 那就需要了解一下 预检请求 对于非简单请求&#xff08;如PUT、DELETE或包含自定义HTTP头的请求&#xff09;&#xff0c;浏览器会先发送一个OPTIONS请求到目标服务器&#xff0c;询问是否允许该跨域请求。这个过程称为预检请求。 当opt…

【爬虫实战】今日头条-关键词搜索-快速整理出1w条数据

快速整理头条关键词数据工具&#xff0c;学习效率妥妥翻倍&#xff01;&#xff01;&#xff01;本案例源码仅供学习参考&#xff01; 项目功能简介&#xff1a; 1.可视化式配置&#xff1b; 2.任意关键词&#xff1b; 3.自动翻页&#xff1b; 4.支持指定最大翻页页码&…

IP地址网络号:解读其构成与重要性

在数字化时代&#xff0c;IP地址已成为我们网络生活不可或缺的一部分。每个设备在网络中都有一个独特的IP地址&#xff0c;这个地址由网络号和主机号组成&#xff0c;它们共同构成了我们的网络身份。其中&#xff0c;网络号的作用尤为重要&#xff0c;它决定了设备所连接的网络…

【算法专题--栈】用栈实现队列 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双栈 模拟 队列 &#x1f95d;栈 和 队列 的特性 &#x1f34d;具体思路 &#x1f34d;案例图解 四、总结与提炼 五、共勉 一、前言 用栈实现队列 这道题&#xff0c;可以说是--栈专题--&#xff0c;最经典的一道题&…