2013-09-27 307 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