INCLUDEPATH in qmake project file doesn't work

醉酒当歌 提交于 2019-11-28 10:48:28

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')

Kuba Ober

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.

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

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.

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.)

user7446574

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

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

DBedrenko

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

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.

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.

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.

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

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