2013-09-27 12 views
13

Ho un problema con l'inclusione in un progetto qmake. Nel mio file .pro ho:INCLUDEPATH nel file di progetto qmake non funziona

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

e nel mio cpp:

#include <opencv\cv.h> 

Il compilatore segnala un errore:

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

ma se scrivo questo nel mio cpp :

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

funziona!

Costruisco il progetto da Qt Creator. Che cosa sto facendo di sbagliato?

+0

Hai provato a impostare 'INCLUDEPATH + = "C: \\ OpenCV \\ costruire \\ includere"' e utilizzare '#include ' nell'origine file? – vahancho

+0

Ho provato, ma non funziona ... – user2794529

+3

OK Ho trovato la soluzione qui: http://stackoverflow.com/questions/14742856/qt-creator-adding-external-library-still-cannot-open-include -file-gl-glew-h Ho avuto la replica qmake -.- ' – user2794529

risposta

2

ecco uno dei miei file pro:

# 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 

Il includere nei percorsi alla directory relativa dei miei file lib. mtBlahRTP.h e mtBlahRTP.cpp sono in ../../lib

7

Il tuo problema potrebbe essere correlato al fatto di avere barre rovesciate nelle #include direttive nude is undefined behavior.

Effettuare quanto segue.

  1. Sostituisci il tuo comprendono con

    #include <opencv/cv.h> 
    

    Nota la barra!

  2. Rimuovi la directory di creazione shadow creata da Qt Creator per te. Lo troverai sopra la directory del progetto, il suo nome inizia con build-.

  3. Ricostruisci il progetto.

Si noti che questo si occupa di rieseguire qmake.

1

Mi sono imbattuto in un problema simile e quello che ho trovato è che l'IDE QtCreator non sta rileggendo i risultati di qmake e aggiornando il messaggio "Impossibile aprire". Devi chiudere il file incriminato e riaprirlo, quindi vedrai che non visualizza più l'errore.

1

Ho dovuto fare due passaggi: (ri) eseguire qmake e ricostruire l'intero progetto - solo allora l'impostazione di INCLUDEPATH è stata considerata correttamente. (. Con QtCreator 3.5 e 3.6 (Qt 5.5 e Qt 5.6) su Windows)

0

stavo ottenendo l'errore:

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

Si scopre che la causa è stata che non era in grado di trovare canserialcomm.h dove quel costruttore è dichiarato.Ciò è avvenuto nonostante me avere INCLUDEPATH nel punto file di progetto alla directory contenente il file di intestazione:

INCLUDEPATH += . \ 
     .. 

Quello che ho dovuto fare per risolvere questo problema è esplicitamente specificare il file di intestazione; Ho aggiunto:

HEADER += ../canserialcomm.h 
0

Si dovrebbe utilizzare il doppio backslash quando in windows per qt creator con msvc. così: INCLUDEPATH + = C: \\ libcurl \\ libcurl-vc-x64-release-dll-ipv6-sspi-winsl \\ include

risolverà il problema.

0

In Windows è necessario eliminare -I prima di ogni directory aggiunta alla variabile INCLUDEPATH. Per esempio: sotto le finestre:

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

Sotto linux mac &:

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

Io non so se dipende da una diversa versione di qmake o meno. Ma dopo aver terminato il comando qmake, controllo il Makefile e il doppio -I è il problema.

0

È necessario fare diverse cose. Pugno, nel file .pro, è necessario virgolette due barre rovesciate in un momento, come questo:

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

È ALSE bisogno di una barra obliqua nel #include nel file cpp in questo modo:

#include <opencv/cv.h> 

Al termine, eliminare la cartella di build. Questa è la cartella con un nome molto complicato del tipo build-untitled-Desktop_Qt_5_7_0_MSVC2015_32bit-Release. Quindi, nel menu Build, premi "Esegui qmake". Quando hai fatto tutto questo, dovrebbe essere perfetto.

1

Ho la stessa domanda, prima di costruire o in esecuzione, si dovrebbe qmake (Corporatura => qmake) esso.

mie configurazioni per INCLUDEPATH:

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