qt 使用opencv,添加外部库,一直找不到头文件,应该如何解决
下面是.pro 文件以及.pri 文件
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
include (D:/data/opencv-4.10.0/opencv-4.10.0/_build/opencv.pri)
INCLUDEPATH += D:/data/opencv-4.10.0/opencv-4.10.0/_build/install/include
Debug:{
LIBS += -lD:/data/opencv-4.10.0/opencv-4.10.0/_build/install/x64/vc17/lib/opencv_world4100d
}
Release:{
LIBS += -lD:/data/opencv-4.10.0/opencv-4.10.0/_build/install/x64/vc17/lib/opencv_world4100
}
下面是报错信息
尝试过更改INCLUDPATH 改为 -I………………
这个问题我已经解决了,主要问题原因不是很清楚,总体来说就是,qt在编辑时和编译时,依赖的路径并不一致,一般情况下, 设置了includepath目录之后,在进行编译时会自动寻找到includepath指定的目录,这是一个自动的过程,然而,在windows环境下,或者说在我的环境下出现了异常,导致在寻找依赖目录时,出现了问题,导致一致报错, 增加一个dependpath就行了,指定的目录跟includepath一致。
下面是AI对这个问题的答复
在 Qt 项目配置中,INCLUDEPATH 和 DEPENDPATH 是两个不同的变量,它们的作用和使用场景有所不同。
INCLUDEPATH
INCLUDEPATH 用于指定编译器在编译过程中查找头文件的路径。当你在代码中使用 #include 指令包含头文件时,编译器会根据 INCLUDEPATH 中指定的路径来查找这些头文件。
例如:
INCLUDEPATH += D:/lib/include
这告诉编译器在 D:/lib/include 目录下查找头文件。
DEPENDPATH
DEPENDPATH 用于指定 qmake 在生成 Makefile 时查找依赖文件的路径。虽然 DEPENDPATH 和 INCLUDEPATH 在某些情况下可以设置为相同的路径,但它们的主要用途不同。DEPENDPATH 主要用于 qmake 在处理依赖关系时查找相关文件。
通常情况下,DEPENDPATH 可以省略,因为 qmake 会自动根据 INCLUDEPATH 来处理依赖关系。然而,在某些复杂的项目中,可能需要显式地设置 DEPENDPATH 来确保 qmake 能够正确处理依赖关系。
配置示例
根据你提供的信息,你的 .pri 文件配置如下:
INCLUDEPATH += D:/lib/include
Debug {
}
Release {
}
注意事项
路径分隔符:在 .pro 和 .pri 文件中,路径分隔符通常使用正斜杠(/)而不是反斜杠(\)。
库文件路径:在 LIBS 中指定库文件路径时,不需要使用 -l 前缀。-l 前缀用于指定库文件名,而不是完整路径。
修改后的配置如下:
INCLUDEPATH += D:/lib/include
Debug {
}
Release {
}
结论
通常情况下,INCLUDEPATH 是必需的,而 DEPENDPATH 可以省略。在大多数情况下,INCLUDEPATH 足以确保编译器和 qmake 正确处理头文件和依赖关系。如果你的项目没有特殊需求,可以只设置 INCLUDEPATH。