【QT】pro文件里添加又删除LIBS不影响运行的原因

我发现个问题啊,如果运行项目,发现报错,缺少某dll,接着你在pro文件里加上win32:LIBS += -lOpengl32(举个例子),接着可以运行了,接着把这行删掉,再运行,仍然可以,后续是不影响的。

但是当你把build文件夹删掉的时候,再次运行,就会出现同样的错误,gpt说是因为makefile已经存在了,已经找到了位置,后续并没有重新生成,经过我测试,发现还真是这样的。

  • 除非你删掉build文件夹再运行,否则就发现没变动

当你在Qt项目的.pro文件中添加win32:LIBS += -lOpengl32,然后成功构建项目后,这行配置指示链接器在Windows平台上链接到OpenGL库Opengl32.lib。这个库提供了OpenGL的标准函数实现,对于使用OpenGL功能的应用程序是必需的。当你首次添加这行配置并构建项目时,qmake会生成相应的Makefile,其中包含了链接到Opengl32.lib的指令。这使得项目能够找到OpenGL的实现,因此可以成功运行。

如果你在之后把这行配置删除,但没有删除构建目录(即build文件夹),然后重新构建项目,实际上并不会重新生成Makefile(因为qmake认为没有必要),或者生成的Makefile仍然包含之前的配置缓存,因此链接到Opengl32.lib的指令依然生效。这就是为什么删除那行配置后项目仍然能够运行的原因。

当你完全删除构建目录后再次构建项目,qmake会根据当前的.pro文件内容从头开始生成新的Makefile。由于此时.pro文件中已经不包含win32:LIBS += -lOpengl32这行配置,新生成的Makefile中不会包含链接到Opengl32.lib的指令,导致链接器无法找到OpenGL的实现,因此项目无法运行。

解决方案

为了确保项目能够稳定运行,如果你的项目确实依赖于OpenGL库,建议在.pro文件中保留win32:LIBS += -lOpengl32这行配置。这样,无论何时重新构建项目,无论是否删除了构建目录,项目都能够找到并链接到必需的OpenGL库。

此外,理解Qt构建过程和构建系统如何处理项目文件中的配置对于解决此类问题很有帮助。记住,每次更改.pro文件后,最好是清理(Clean)然后重新构建(Rebuild)项目,确保所有的配置更改都能正确反映到Makefile和最终的构建产物中。

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

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

相关文章

PCB学习记录---原理图

一、注释 NC:no connect,默认不连接 NF: no fix,默认不安装 0R: 0R的电阻,即可以短路 二、看图流程 1、看标题,了解功能 2、浏览有几个模块 3、找芯片对应的数据手册,了解芯片功能和使用 例如CH224&#xff…

JavaScript - 你知道==、===和Object.is的区别吗

难度级别:初级及以上 提问概率:75% 因为==操作符会存在数据类型的隐式转换,所以最终判断的是转换后的值是否相等,经过总结发现,除了null、undefined和NaN以外,其他的数据类型在遇到==数据转换时候,更倾向于先转为数值类型再进行比较,…

agi入门-大模型开发基础

AGI(Artifical General Inteligence)的到来还有多久? 乐观预测:明年主流预测:3-5年悲观预测:10年 AGI时代,AI无处不在,相关从来者将如何分? AI使用者:使用别人开发的AI产品AI产品…

LangChain学习——核心组件

LangChain是一个用于大语言模型(LLM)应用开发的框架,它简化了LLM应用的开发难度,帮助开发者快速构建复杂的LLM应用。 一、LangChain 库简介​ LangChain 包的主要价值主张是: 组件:用于处理语言模型的可…

面试经典算法系列之双指针6 -- 三数之和

面试经典算法题6 – 三数之和 LeetCode.15 公众号:阿Q技术站 问题描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有…

密码学与密码安全:理论与实践

title: 密码学与密码安全:理论与实践 date: 2024/4/10 21:22:31 updated: 2024/4/10 21:22:31 tags: 密码学加密算法安全协议密码分析密码安全实际应用未来发展 第一章:密码学基础 1.1 密码学概述 密码学是研究如何保护信息安全的学科,旨在…

OSPF数据报文格式

OSPF协议是跨层封装的协议,跨四层封装,直接将应用层的数据封装在网络层协议后面,IP协议包中协议号字段对应的数值为——89 OSPF的头部信息: ——所有数据包公有的信息 版本:OSPF版本 在IPV4中一般使用OSPFV2&#xf…

配置启动nacos,保姆级教程

下载nacos 下载链接 https://github.com/alibaba/nacos/releases进去下拉,找到下载版本信息。 下载后如图所示。 配置数据库 在我们的conf文件夹中有一个nacos-mysql的数据库文件 我们需要导入数据库,可通过工具Navicat等进行导入。 会有一下几张表…

计算机进制

进制 进制也就是进位制,是人们规定的一种进位方法对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进…

WebGPU vs. 像素流

在构建 Bzar 之前,我们讨论过我们的技术栈是基于在云上渲染内容的像素流,还是基于使用设备自身计算能力的本地渲染技术。 由于这种选择会极大地影响项目的成本、可扩展性和用户体验,因此在开始编写一行代码之前,从一开始就采取正确…

在B站看课的进度助手

效果 代码 BilibiliVideoDurationCrawler import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.text.ParseException; import java.util.ArrayList; imp…

KVM+GFS分布式存储系统构建KVM高可用

概述 本章利用KVM 及 GlusterFS 技术,结合起来从而实现 KVM 高可用。利用 GlusterFS 分布式复制卷,对 KVM 虚拟机文件进行分布存储和冗余。分布式复制卷主要用于需要冗余的情况下把一个文件存放在两个或两个以上的节点,当其中一个节点数据丢失…

雪花飘,购物抛物线,进度条等四个案列,带入走进 CSS transition

前言 今天从四个案例,我们一起走进 CSS Transition。 源码 以及 在线演示地址 源码地址: 四个案例, CSS Transition 源码 在线演示地址:(兼容移动端) 贝塞尔曲线运动进度条雪花飘飘效果购物车抛物线效果 案例演示 内置贝塞…

windows server 2019 -DNS服务器搭建

前面是有关DNS的相关理论知识,懂了的可以直接跳到第五点。 说明一下:作为服务器ip最好固定下来,以DNS服务器为例子,如果客户机的填写DNS信息的之后,服务器的ip如果变动了的话,客户机都得跟着改&#xff0c…

深入浅出Redis(九):Redis的发布订阅模式

引言 Redis是一款基于内存的键值对数据库,提供了多种数据结构存储数据,存取数据的速度还非常快,除了这些优点它还提供了其他特色功能,比如:管道、lua脚本、发布订阅模型 本篇文章主要描述发布订阅模型,将…

linux基础篇:Linux中磁盘的管理(分区、格式化、挂载)

Linux中磁盘的管理(分区、格式化、挂载) 一、认识磁盘 1.1 什么是磁盘 磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取和改写…

Leetcode算法训练日记 | day22

一、二叉搜索树的最近公共祖先 1.题目 Leetcode:第 235 题 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足…

Python 发送邮件 (含代码)

通过Python代码来发送邮件。下面是步骤 先在某一个邮箱页面 开启 POP3/SMTP服务 获取授权码,这样免密码登录 授权码会用在代码里 获得 SMTP 服务器地址 代码 import smtplib from email.mime.text import MIMEText from email.utils import formataddr ms…

一例简单的文件夹病毒的分析

概述 这是一个典型的文件夹病毒,使用xp时代的文件夹图标,通过可移动存储介质传播,会向http://fionades.com/ABIUS/setup.exe下载恶意载荷执行。 其病毒母体只是一个加载器,会在内存是解密加载一个反射型的dll,主要的…

OOM三大场景和解决方案

目录 首先,说说什么是OOM? Java OOM的三大核心场景 场景一、堆内存OOM 类型一:在线OOM分析,这个属于轻量级的分析: 类型二:离线OOM分析,这个属于轻量级的分析: 场景二&#xf…