(Qt) 预编译头文件precompile_header

文章目录

  • 什么是预编译头文件PCH
  • Qt中的预编译头文件
    • qmake
    • stable.h
    • 编译效果
    • 效果
  • END

什么是预编译头文件PCH

预编译头文件是C++编译系统中的一种机制,用于提高编译速度。

就是将我们需要的内容放在预编译头文件中,并单独编译成一个文件。但其他文件在编译时需要里面的内容时,可以直接去使用这个编译好的文件,节省编译时间。

我们常见的stdafx.hpch.h就是在一些平台中常见的预编译头文件常用命名。

大多数编译工具的机制都是类似的,本文主要说一下qmake中的使用方式。

Qt中的预编译头文件

qmake

这里我们要把stable.h作为一个预编译头文件使用,应该在qmake中这么写。

# 添加config配置
CONFIG += precompile_header
# 指定要使用的预编译头文件
PRECOMPILED_HEADER += stable.h

stable.h

其实就是普通的写一个头文件,请注意什么样的内容可以写进头文件,什么不可以。

这是C++基础,不做过多解释,这里随便写点常用的。如:宏,常量,声明,模板,inline函数等等

#ifndef _STABLE_H_
#define _STABLE_H_

// 设置全局字符集
#pragma execution_character_set("utf-8")

#include <QDebug>
#include <QString>

#define DEBUG_LOG(fmt, ...)                                                    \
    do {                                                                       \
        qDebug() << QString::asprintf("Debug:[File:%s][Fun:%s][Line:%d] " fmt, \
                                      __FILE__, __func__, (int)__LINE__,       \
                                      ##__VA_ARGS__);                          \
    } while (0)

constexpr int mod = 1e9 + 7;

extern int g_var;

template <typename Type>
void show(Type&& obj) {
    qDebug() << obj;
}

// 需要设为内联函数
inline void fun() {
    DEBUG_LOG();
}

#endif  // _STABLE_H_

编译效果

在最终编译上,会把这个stable.h文件编译成一个单独的二进制文件。

比如在默认情况下,在如下位置:(假设工程名为precompile)

...\build-precompile-Desktop_Qt_6_2_4_MinGW_64_bit-Debug\debug\stable.h.gch\c++

到最后这个文件的名字就叫c++,且大小非常庞大,几百mb都是很正常的事情。

效果

无论是在当前pro中,还是在子目录pri中,都可以使用,且与qmake中写的顺序无关。

在子目录pri中写加入PRECOMPILED_HEADER同样有效。




END

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ES】Elasticsearch常见问题与解决(持续更新)

目录 Elasticsearch常见问题 1. 集群健康问题 2. 性能问题 3. 映射问题 4. 分片问题 5. 内存问题 6. 硬件问题 7. 配置问题 8. 安全问题 9. 网络问题 10. 版本不兼容 Elasticsearch日常使用小结 【Q】离线告警&#xff0c;有IP已离线 【Q】统计某个应用的某个索引…

009:vue结合el-table实现表格行拖拽排序(基于sortablejs)

文章目录 1. 实现效果2. 安装 sortablejs 插件3. 完整组件代码4. 注意点 1. 实现效果 2. 安装 sortablejs 插件 sortablejs 更多用法 cnpm i --save sortablejs3. 完整组件代码 <template><div class"home"><div class"body"><el-ta…

【日常笔记】阿里云ECS - 挂载新购云盘

一、场景 二、实战 Stage 1 &#xff1a;查看分区列表 Stage 2 &#xff1a;查看分区信息 Stage 3 &#xff1a;格式化分区 Stage 4 &#xff1a;将分区挂载到指定目录下 Stage 5 &#xff1a;查看磁盘空间使用情况 一、场景 阿里云 ecs 新购云盘 500G 二、实战 Stag…

公司创建百度百科需要哪些内容?

一个公司或是一个品牌想要让自己更有身份&#xff0c;更有知名度&#xff0c;更有含金量&#xff0c;百度百科词条是必不可少的。通过百度百科展示公司的详细信息&#xff0c;有助于增强用户对公司的信任感&#xff0c;提高企业形象。通过百度百科展示公司的发展历程、领导团队…

CSS 向上扩展动画

上干货 <template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container&q…

influxdb 入门避坑

一、安装 influxdb2.0以上的版本变化较大&#xff0c;需要注意版本问题。 二、influxdb cli 使用 以下是使用的window influxdb cli 客户端&#xff0c;管网下载cli直接解压&#xff0c;influx.exe 不能直接双击打开&#xff0c;需要使用管理员开打power shell&#xff0c;进…

常见算法(java版)

冒泡排序 每次从数组中找出最大值放在数组的后面去。 关键步骤 确定总共需要做几轮&#xff1a; 数组的长度-1。 每轮比较几次:数组的长度 - 第i轮。 当前位置大于后一个位置则交换数据。 选择排序 每轮选择当前位置&#xff0c;开始找出后面的较小值与该位置交换。 关键…

Amazon Lex揭示大语言模型与生成式AI的未来发展

Amazon Lex的产品经理Marcelo Silva与总经理Ganesh Geller以及洛克希德马丁公司的研究员和首席架构师Greg Doppelhower在re:Invent开发者大会中分享了关于大语言模型与生成式AI的最新进展。演讲强调了如何利用Amazon Lex以及与Amazon Connect的完全集成平台&#xff0c;为员工和…

IntelliJ IDE 插件开发 | (四)开发一个时间管理大师插件

系列文章 IntelliJ IDE 插件开发 |&#xff08;一&#xff09;快速入门IntelliJ IDE 插件开发 |&#xff08;二&#xff09;UI 界面与数据持久化IntelliJ IDE 插件开发 |&#xff08;三&#xff09;消息通知与事件监听IntelliJ IDE 插件开发 |&#xff08;四&#xff09;开发一…

Docker七 | 搭建Swarm集群

目录 创建Swarm集群 创建管理节点 增加工作节点 查看集群 部署服务 新建服务 查看服务 服务伸缩 增加服务 减少服务 删除服务 创建Swarm集群 创建管理节点 在192.168.117.131下执行docker swarm init命令的节点自动成为管理节点 [rootlocalhost ~]# docker swar…

TransNeXt:稳健的注视感知ViT学习笔记

论文地址&#xff1a;https://arxiv.org/pdf/2311.17132.pdf 代码地址&#xff1a; GitHub - DaiShiResearch/TransNeXt: Code release for TransNeXt model 可以直接在ImageNet上训练的分类代码&#xff1a;GitHub - athrunsunny/TransNext-classify 代码中读取数据的部分修改…

【数据采集与预处理】数据接入工具Kafka

目录 一、Kafka简介 &#xff08;一&#xff09;消息队列 &#xff08;二&#xff09;什么是Kafka 二、Kafka架构 三、Kafka工作流程分析 &#xff08;一&#xff09;Kafka核心组成 &#xff08;二&#xff09;写入流程 &#xff08;三&#xff09;Zookeeper 存储结构 …

检测如下MHA运行条件【踩坑记录】

【masterha_check_ssh --conf/etc/mha/app1.cnf&#xff1a;SSH免密登录】 【错误信息1】 [error][/usr/share/perl5/vendor_perl/MHA/SSHCheck.pm, ln111] SSH connection from root10.0.0.53(10.0.0.53:22) to root10.0.0.51(10.0.0.51:22) failed! 【错误反馈】就是服务器…

2023年山东省高职组区块链技术竞赛任务书

2023年山东省高职组区块链技术任务书 目录 模块一&#xff1a;区块链产品方案设计及系统运维 任务1-1&#xff1a;区块链产品需求分析与方案设计 任务1-2&#xff1a;区块链系统部署与运维 任务1-3&#xff1a;区块链系统测试 模块二&#xff1a;智能合约开发与测试 任务2-1&am…

DRF从入门到精通六(排序组件、过滤组件、分页组件、异常处理)

文章目录 一、排序组件继承GenericAPIView使用DRF内置排序组件继承APIView编写排序 二、过滤组件继承GenericAPIView使用DRF内置过滤器实现过滤使用第三方模块django-filter实现and关系的过滤自定制过滤类排序搭配过滤使用 三、分页组件分页器一&#xff1a;Pagination&#xf…

Unity 创建/删除/启用/禁用组件的惯用方法

1、创建组件&#xff1a; Unity 创建组件可以通过编辑器中的"Add Component"创建&#xff0c;或者代码动态创建&#xff1a;GameObject.AddComponent<T>()&#xff0c;如&#xff1a; ameObject.AddComponent<Rigidbody>(); 2、删除组件&#xff1a; …

中介者模式-Mediator Pattern-1

如果在一个系统中对象之间的联系呈现为网状结构&#xff0c; 对象之间存在大量的多对多联系&#xff0c;将导致系统非常复杂。 这些对象既会影响别的对象&#xff0c;也会被别的对象所影响。 这些对象称为同事对象&#xff0c;它们之间通过彼此的相互作用实现系统的行为。 在网…

同义词替换降低论文相似度的注意事项 papergpt

大家好&#xff0c;今天来聊聊同义词替换降低论文相似度的注意事项&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 标题&#xff1a;同义词替换降低论文相似度的注意事项 …

【Java系列】多线程案例学习——基于阻塞队列实现生产者消费者模型

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录…

案例260:基于微信小程序的签到系统的设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder …
最新文章