我在qmake项目中遇到了包含问题 . 在我的.pro文件中,我得到了:
INCLUDEPATH += "C:\OpenCV\build\include"
在我的cpp中:
#include <opencv\cv.h>
编译器指示错误:
无法打开包含文件:'opencv \ cv.h':没有这样的文件或目录
但如果我在我的cpp中写这个:
#include "C:\OpenCV\build\include\opencv\cv.h"
有用!
我在Qt Creator中构建项目 . 我究竟做错了什么?
12 回答
您必须运行qmake(build-> run qmake)来验证专业文件中的更改 . Qt creator Adding external library (still: Cannot open include file: 'GL/glew.h')
你的问题可能与赤裸裸的
#include
指令is undefined behavior中有反斜杠的事实有关 .请执行下列操作 .
注意正斜杠!
删除Qt Creator为您制作的影子构建目录 . 您将在项目目录上方找到它,其名称以
build-
开头 .重建项目 .
请注意,这需要重新运行qmake .
这是我的专业文件之一:
include路径指向lib文件的RELATIVE目录 . mtBlahRTP.h和mtBlahRTP.cpp位于../../lib中
我遇到了类似的问题,我发现QtCreator IDE没有重新读取qmake的结果并更新“无法打开”消息 . 您需要关闭有问题的文件并重新打开它 - 然后您将看到它不再显示错误 .
我必须做两个步骤:(重新)运行qmake并重建整个项目 - 只有这样才能正确地考虑INCLUDEPATH设置 . (在Windows上使用QtCreator 3.5和3.6(Qt 5.5和Qt 5.6) . )
我有同样的问题,在构建或运行之前,你应该 qmake (Build => qmake)它 .
我对INCLUDEPATH的配置:
您遇到的唯一问题是错误地链接OpenCV库 . 这里给出的其他答案可能有效,也可能无效,但我已经在另一个线程上发布了使用Qt Creator中的"Add Library"向导解决此问题的可靠方法:https://stackoverflow.com/a/51914928/10245006
我收到了错误:
事实证明,原因是它无法找到声明构造函数的
canserialcomm.h
. 尽管我在项目文件中有INCLUDEPATH
指向包含该头文件的目录:我必须做的就是明确指定头文件;我补充说:
在带有msvc的qt creator的windows中,你应该使用双反斜杠 . 像这样:INCLUDEPATH = C:\ libcurl \ libcurl-vc-x64-release-dll-ipv6-sspi-winssl \ include
这将解决问题 .
在Windows下,您必须在添加到INCLUDEPATH变量的每个目录之前消除-I . 例如:在Windows下:
在linux和mac下:
我不确定它是否依赖于不同的qmake版本 . 但在完成qmake命令后,我检查Makefile并且双-I是问题 .
你需要做几件事 . Fist,在.pro文件中,你需要一次引用两个反斜杠,如下所示:
您还需要在.cpp文件中的
#include
中使用前导,如下所示:完成后,删除构建文件夹 . 这是具有非常复杂的
build-untitled-Desktop_Qt_5_7_0_MSVC2015_32bit-Release
类型名称的文件夹 . 然后,在“生成”菜单中,按"Run qmake" . 当你完成所有这些,它应该编译好 .不知何故,当我有几个INCLUDEPATH =时,它不起作用 . 当我将这些东西组合成一个单独的东西突然工作 .