首页 > 其他分享 >QT中 No such file or directory的解决办法

QT中 No such file or directory的解决办法

时间:2023-10-04 18:55:37浏览次数:40  
标签:Qt No 5.8 32 mingw53 file Qt5.8 ID QT

原文:https://blog.csdn.net/zwjzwj108108/article/details/79349985/

报错具体情境:
使用D:\Qt\Qt5.8.0\5.8\mingw53_32> 终端进行编译程序,步骤如下:
qmake -project //生成CH01.pro 文件
qmake CH01.pro //生成 Makefile(总的makefile) Makefile.Debug Makefile.Release
mingw32-make //生成release版本,在release目录下
mingw32-make debug //生成debug版本,在debug目录下
会报如下错误:
dialog.h:4:19: fatal error: QDialog: No such file or directory

这个是由于没有包含相应的头文件目录导致的问题。需要在Makefile.Release(Debug)文件中查看INCPATH = -I. -I. -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtGui -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtANGLE -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtCore -Idebug -I. -ID:\Qt\Qt5.8.0\5.8\mingw53_32\mkspecs\win32-g++
比如我的错误是头文件QDialog不能找到,该文件在D:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtWidgets下,可以查看上面的目录,确实没有包含该目录。
大家可以想下Makefile文件是如何生成的,是qmake根据.pro文件编译后产生的,那么解决方法为:
在创建工程的时候使用如下语句:
qmake -project QT+=widgets
qmake CH01.pro
查看Makefile.Release(Debug)文件中的INCPATH = -I. -I. -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtWidgets -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtGui -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtANGLE -ID:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtCore -Idebug -I. -ID:\Qt\Qt5.8.0\5.8\mingw53_32\mkspecs\win32-g++

.pro文件中各变量意义:

◆ HEADERS 指定工程的 C++头文件(.h)。
◆ SOURCES 指定工程的C++实现文件(.cpp)。
◆ FORMS 指定需要 uic 处理的由 Qt 设计师生成的.ui 文件。
◆ RESOURCES 指定需要 rcc 处理的.qrc 文件。
◆ DEFINES 指定预定义的 C++预处理符号。
◆ INCLUDEPATH 指定 C++编译器搜索全局头文件的路径。
◆ LIBS 指定工程要链接的库。库既可以通过绝对路径指定,也可以使用源自 Unix 的-L 和-l 标识符来指定(例如,-L/usr/local/lib 和-ldb_cxx)。
◆ CONFIG 指定各种用于工程配置和编译的参数。
◆ QT 指定所要使用的 Qt 模块(默认是 core gui,对应于 QtCore 和 QtGui 模块)。加上模块之后,makefile中的模块头文件目录也就自动加上啦。
◆ VERSION 指定目标库的版本号。
◆ TARGET 指定可执行文件或库的基本文件名,其中不包含任何的扩展、前缀或版本
号(默认的是当前的目录名)。
◆ DESTDIR 指定可执行文件放置的目录(默认值是平台相关的。
例如,在 Linux 上,指当前目录;在 Windows 上,则是指 debug 或 release 子目
录)。
◆ DLLDESTDIR 指定目标库文件放置的目录(默认路径与 DESTDIR 相同)。

CONFIG 变量用来控制编译过程中的各个方面。它支持下面这些参数:

◆ debug 是指具有调试信息的可执行文件或者库,链接 Qt 库的调试版。
◆ release 是指编译不具有调试信息的可执行文件或者库,链接发行版的 Qt 库。如果
同时指定 debug 和 release,则 debug 有效。
◆ warn_off 会关闭大量的警告。默认情况下,警告的状态是打开的。
◆ qt 是指应用程序或者库使用 Qt。这一选项是默认包括的。
◆ dll 是指动态编译库。
◆ staticlib 是指静态编译库。
◆ plugin 是指编译一个插件。插件总是动态库,因此这一参数暗含 dll 参数。
◆ console 是指应用程序需要写控制台(使用 cout、cerr、qWarning(),等等)。
◆ app_bundle 只适用于 Mac OS X 编译,是指可执行文件被放到束中,这是 Mac OS X
的默认情况。
◆ lib_bundle 只适用于 Mac OS X 编译,指库被放到框架中。

关于上面的各个变量的使用方法:
在终端上执行
qmake -project QT+= widgets
则加上了widgets模块,在pro文件中生成 QT+=widgets 语句。

qmake -project SOURCES+= ./src/test/cpp
则在pro文件生成 SOURCES+=./src/test.cpp
————————————————
版权声明:本文为CSDN博主「IT张先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zwjzwj108108/article/details/79349985/

标签:Qt,No,5.8,32,mingw53,file,Qt5.8,ID,QT
From: https://www.cnblogs.com/bruce1992/p/17742578.html

相关文章

  • P1025 [NOIP2001 提高组] 数的划分 题解
    题目传送门本题共有两种方法,分别是递归深搜和动态规划方法一:递归深搜Solution从小到大一一枚举每一个划分的数,。只要找到一种方案就记录,具体细节代码中有注释。Code#include<bits/stdc++.h>usingnamespacestd;intn,k,ans;voiddfs(intstart,intstep,intsum){......
  • Sentinel系列之SlotChain、NodeSelectorSlot、ClusterBuilderSlot分析
    本文基于Sentinel1.8.6版本分析1.SlotChain我们从入口com.alibaba.csp.sentinel.SphU#entry(java.lang.String)开始分析。一路走读下来,会进入到这个方法com.alibaba.csp.sentinel.CtSph#lookProcessChain,查找该资源对应的SlotChain。接下来看如何构建这个SlotChain.Se......
  • Qt之窗口的常用属性
    一、setAttribute()函数setAttribute()函数用于设置窗体的一些属性,其函数原型为:voidQWidget::setAttribute(Qt::WidgetAttributeattribute,boolon=true)枚举类型Qt::WidgetAttribute定义了窗体的一些属性,可以打开或关闭这些属性。枚举类型Qt::WidgetAttribute常用的......
  • "Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/n
    docker-compose搭建elasticsearch出现问题例子如下version:'3'services:elasticsearch:image:elasticsearch:7.14.0container_name:elasticsearchenvironment:-"discovery.type=single-node"-"xpack.sec......
  • note 糖水不等式
    什么是糖水不等式?\[\frac{a}{b}\lt\frac{a+m}{b+m}\\\(m>0)\]凭直觉这个不等式当然是成立的,但数学这么严谨的东西你直觉算个姬直觉是不可靠的,那我们证明一下:我们用改变后的浓度减去初始浓度:\[\frac{a+m}{b+m}-\frac{a}{b}=\frac{a(b+m)-b(a+m)}{a(a+m)}=\frac{(ab+am)-(a......
  • note 线段树
    适用场景:不断区间修改、区间询问。假设我们要区间求和,\(tree\)的含义:区间的和,其两个子节点为这个区间分为两半的和。我们把一个数组\(a\)看作一颗树\(tree\),例:112333对应的\(tree\)(\(()\)里是编号,\([]\)里是对应的区间):(1)13[1,6]/......
  • 图形学 Cellular Noise
    前言本篇重点如何实现CellularNoise定义CellularNoise基于Voronoi图生成,其外观就像是一个个紧挨着的细胞,因而得名CellularNoise。而Voronoi图的定义是由一组连续多边形组成,多边形的形成由其内部的控制点来控制,按照最邻近原则划分平面,即每个多边形都代表平面上离其内部控制......
  • [Compose] Asynchronous Reactive Data with Promises
    Let’smakeusingtheobserversasynchronous!Thiswaywecanupdatethedataandhavemultipleobserversrunasynchronously.classAsyncData{constructor(initialData){this.data=initialData;this.subscribers=[];}//Subscribetochan......
  • P6190 [NOI Online 1 入门组] 魔法
    P6190[NOIOnline1入门组]魔法该题中用到的矩阵加速Floyd可能存在负环,但是这个题是可以用的,所以不能每次跑完之后把各个节点到自己的距离更新为0!最外层循环才是中转站节点,不管什么时候都是这样的。特别是在矩阵乘法中,一般的矩阵相乘都是最内层循环遍历行和列,而矩阵加速......
  • P1054 [NOIP2005 提高组] 等价表达式
    P1054[NOIP2005提高组]等价表达式这个题在计算表达式时可能会出现高次方,比如在某一数据中就出现了2^7^10也就是\(2^{70}\)自然溢出会寄,所以要取模自然溢出\(80\)分ullquick_pow(ullx,ullp){ ullres=1; while(p) { if(p&1)res*=x; p>>=1;......