2013-09-27 281 views
13

我在qmake项目中遇到了包含问题。在我的.pro文件我有:qmake项目文件INCLUDEPATH不起作用

INCLUDEPATH += "C:\OpenCV\build\include" 

,并在我的cpp:

#include <opencv\cv.h> 

编译器显示错误:

Cannot open include file: 'opencv\cv.h': No such file or directory

,但如果我写这在我的cpp :

#include "C:\OpenCV\build\include\opencv\cv.h" 

它的工作原理!

我从Qt Creator中构建项目。我究竟做错了什么?

+0

你尝试设置'INCLUDEPATH + = “C:\\ \\的OpenCV建\\包括”'和源使用的#include''文件? – vahancho

+0

我试过了,但它不起作用... – user2794529

+3

好的我在这里找到了解决方案:http://stackoverflow.com/questions/14742856/qt-creator-adding-external-library-still-cannot-open-include -file -gl-glew -h我重新运行了qmake -.-' – user2794529

回答

2

这里是我的亲文件之一:

# Blah Application 

TEMPLATE = app 
CONFIG += qt console staticlib debug_and_release 
QT  -= gui 
QT  += network sql xml 
TARGET = blah 

CONFIG(debug, debug|release){ 
    DESTDIR = debug 
    LIBS += -L../../../lib/core/debug -lcore 
} else { 
    DESTDIR = release 
    LIBS += -L../../../lib/core/release -lcore 
} 
DEPENDPATH += . ../../lib ../../../lib/core 
INCLUDEPATH += . ../../lib ../../../lib/core 

# Library files 
HEADERS += mtBlahRTP.h 
SOURCES += mtBlahRTP.cpp 

# Input 
HEADERS += 
SOURCES += main.cpp 

的包括路径指向我的LIB文件的相对目录。 mtBlahRTP.h和mtBlahRTP.cpp在../../lib

7

您的问题可能与以下事实有关:在裸露的#include指令is undefined behavior中有反斜杠。

请执行以下操作。

  1. 替换您包括与

    #include <opencv/cv.h> 
    

    注意斜线!

  2. 删除Qt Creator为您制作的阴影构建目录。您会在项目目录上方找到它,它的名称以build-开头。

  3. 重建项目。

请注意,这需要重新运行qmake。

1

我遇到了类似的问题,我发现QtCreator IDE不会重新读取qmake的结果并更新“无法打开”消息。您需要关闭违规文件并重新打开它 - 然后您会看到它不再显示错误。

1

我不得不做两个步骤:(重新)运行qmake并重建整个项目 - 只有INCLUDEPATH设置被认为是正确的。 (随着QtCreator 3.5和3.6(QT 5.5和Windows的Qt 5.6))

0

我得到的错误:

canserialcomm.o: In function `CanSerialComm::CanSerialComm()': 
canserialcomm.cpp:(.text+0xc1): undefined reference to `vtable for CanSerialComm' 

事实证明,原因是它无法找到canserialcomm.h哪里该构造函数被声明。这是尽管我有INCLUDEPATH在项目文件指向的目录包含头文件:

INCLUDEPATH += . \ 
     .. 

我该怎么做才能解决这个问题被明确地指定的头文件;我添加了:

HEADER += ../canserialcomm.h 
0

你应该在窗口中使用双反斜杠为qt创建与msvc。像这样: INCLUDEPATH + = C:\\ libcurl \\ libcurl -vc -x64-release -dll-ipv6-sspi-winssl \\ include

这会解决这个问题。

0

在windows下,您必须消除添加到INCLUDEPATH变量中的每个目录之前的-I。 例如: 在windows下:

INCLUDEPATH += "C:\lib\boost_1_61_0" (back-slash) 

linux下& MAC:

INCLUDEPATH += -I"$$(HOME)/lib/boost_1_61_0" (note the -I and forward-slash) 

我不知道是否这取决于不同的qmake版本与否。但在完成qmake命令后,我检查了Makefile和double - 我是这个问题。

0

你需要做几件事情。拳,在.pro文件,你需要报价同时标记两个反斜杠,像这样:

INCLUDEPATH += "C:\\OpenCV\\build\\include\\opencv\\cv.h" 

您ALSE需要在#include一个FRONTSLASH在.cpp文件是这样的:

#include <opencv/cv.h> 

完成此操作后,请删除生成文件夹。这是一个非常复杂的build-untitled-Desktop_Qt_5_7_0_MSVC2015_32bit-Release类型名称的文件夹。然后,在Build菜单中,按“运行qmake”。当你完成了这一切,它应该编译好。

1

我有同样的问题,建设或运行,则应QMAKE构建=> QMAKE)前。

我对INCLUDEPATH配置:

INCLUDEPATH+=D:\opencv\opencv\build\include 
INCLUDEPATH+=D:\opencv\opencv\build\include\opencv 
INCLUDEPATH+=D:\opencv\opencv\build\include\opencv2