INCLUDEPATH in qmake project file doesn't work

南笙酒味 提交于 2019-12-28 16:33:31

问题


I've got a problem with include in a qmake project. In my .pro file I've got:

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

and in my cpp :

#include <opencv\cv.h>

The compiler indicates an error:

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

but if I write this in my cpp:

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

it works!

I build the project from within Qt Creator. What am I doing wrong?


回答1:


You have to run qmake(build->run qmake) to validate changes in the pro file. Qt creator Adding external library (still: Cannot open include file: 'GL/glew.h')




回答2:


Your problem may be related to the fact that having backslashes in naked #include directives is undefined behavior.

Do the following.

  1. Replace your include with

    #include <opencv/cv.h>
    

    Note the forward slash!

  2. Remove the shadow build directory that Qt Creator has made for you. You will find it above the project directory, its name begins with build-.

  3. Rebuild the project.

Note that this takes care of rerunning qmake.




回答3:


here's one of my pro files:

    # 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

The include path points to the RELATIVE directory of my lib files. mtBlahRTP.h and mtBlahRTP.cpp are in ../../lib




回答4:


I ran into a similar issue and what I found is that the QtCreator IDE is not re-reading the results of qmake and updating the "Cannot open" message. You need to close the offending file and re-open it - then you'll see that it no longer displays the error.




回答5:


I had to do two steps: (re-)run qmake and rebuild the whole project - only then the INCLUDEPATH setting was considered correctly. (With QtCreator 3.5 and 3.6 (Qt 5.5 and Qt 5.6) on Windows.)




回答6:


I have the same question, before building or running, you should qmake(Build=>qmake) it.

My configurations for INCLUDEPATH:

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



回答7:


The only problem you are making is incorrectly linking the OpenCV library. The other answers given here may or may not work, but I have posted on another thread a surefire way to solve this problem using the "Add Library" wizard inside Qt Creator: https://stackoverflow.com/a/51914928/10245006




回答8:


I was getting the error:

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

It turns out that the cause was it wasn't able to find canserialcomm.h where that constructor is declared. This was despite me having INCLUDEPATH in the project file point to the directory containing that header file:

INCLUDEPATH += . \
        ..

What I had to do to fix this is explicitely specify the header file; I added:

HEADER += ../canserialcomm.h



回答9:


You should use double backslashes when in windows for qt creator with msvc. like this: INCLUDEPATH += C:\\libcurl\\libcurl-vc-x64-release-dll-ipv6-sspi-winssl\\include

this will fix the problem.




回答10:


Under windows you have to eliminate the -I before each directory that is added into the INCLUDEPATH variable. For example: Under windows:

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

Under linux & mac:

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

I'm not sure whether it depends on different qmake version or not. But after finishing qmake command, I check the Makefile and the double -I is the issue.




回答11:


You need to do several things. Fist, in the .pro file, you need quotation marks two backslashes at a time, like this:

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

You alse need a frontslash in the #include in your .cpp file like this:

#include <opencv/cv.h>

When you've done this, delete the build folder. This is the folder with a very complicated name of the type build-untitled-Desktop_Qt_5_7_0_MSVC2015_32bit-Release. Then, in the Build menu, press "Run qmake". When you've done all this, it should compile fine.




回答12:


Somehow it did not work for when I had several INCLUDEPATH +=. When I combined the stuff into a single on it suddenly worked.



来源:https://stackoverflow.com/questions/19048098/includepath-in-qmake-project-file-doesnt-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!