Ответ 1
Вам нужно запустить qmake (build- > run qmake) для проверки изменений в файле pro. Создатель Qt Добавление внешней библиотеки (все еще: Невозможно открыть файл include: "GL/glew.h" )
У меня возникла проблема с включением в проект qmake. В моем файле .pro у меня есть:
INCLUDEPATH += "C:\OpenCV\build\include"
и в моем cpp:
#include <opencv\cv.h>
Компилятор указывает на ошибку:
Невозможно открыть файл include: 'opencv\cv.h': нет такого файла или каталога
но если я напишу это в своем cpp:
#include "C:\OpenCV\build\include\opencv\cv.h"
он работает!
Я создаю проект из Qt Creator. Что я делаю неправильно?
Вам нужно запустить qmake (build- > run qmake) для проверки изменений в файле pro. Создатель Qt Добавление внешней библиотеки (все еще: Невозможно открыть файл include: "GL/glew.h" )
Ваша проблема может быть связана с тем, что наличие обратных косых черт в голой директиве #include
- это поведение undefined.
Сделайте следующее.
Замените include
#include <opencv/cv.h>
Обратите внимание на косую черту!
Удалите каталог теневой сборки, созданный для вас Qt Creator. Вы найдете его над каталогом проекта, его имя начинается с build-
.
Восстановите проект.
Обратите внимание, что это связано с повторным запуском qmake.
здесь один из моих файлов 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
Включенный путь указывает на каталог RELATIVE для моих файлов lib. mtBlahRTP.h и mtBlahRTP.cpp находятся в../../lib
У меня возникла аналогичная проблема, и я обнаружил, что среда QtCreator не перечитывает результаты qmake и не обновляет сообщение "Can not open". Вам нужно закрыть нарушительный файл и снова открыть его - тогда вы увидите, что он больше не отображает ошибку.
Мне пришлось сделать два шага: (повторить) запустить qmake и перестроить весь проект - только после этого параметр INCLUDEPATH был рассмотрен правильно. (С QtCreator 3.5 и 3.6 (Qt 5.5 и Qt 5.6) в Windows.)
У меня есть тот же вопрос, перед тем как создавать или запускать, вы должны qmake (Build = > qmake).
Мои настройки для INCLUDEPATH:
INCLUDEPATH+=D:\opencv\opencv\build\include
INCLUDEPATH+=D:\opencv\opencv\build\include\opencv
INCLUDEPATH+=D:\opencv\opencv\build\include\opencv2
Я получал ошибку:
canserialcomm.o: In function `CanSerialComm::CanSerialComm()':
canserialcomm.cpp:(.text+0xc1): undefined reference to `vtable for CanSerialComm'
Оказывается, причина в том, что он не смог найти canserialcomm.h
, где объявлен этот конструктор. Это было несмотря на то, что INCLUDEPATH
в файле проекта указывал на каталог, содержащий этот файл заголовка:
INCLUDEPATH += . \
..
Что мне нужно было сделать, чтобы исправить это, явно указать заголовочный файл; Я добавил:
HEADER += ../canserialcomm.h
Вы должны использовать двойную обратную косую черту, когда в windows для qt-создателя с msvc. как это: INCLUDEPATH + = C:\\libcurl\\libcurl-vc-x64-release-dll-ipv6-sspi-winssl\\include
это устранит проблему.
В окнах вам нужно устранить -I перед каждым каталогом, который добавляется в переменную INCLUDEPATH. Например: Под окнами:
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 - это проблема.
Вам нужно сделать несколько вещей. Fist, в .pro файле вам понадобятся кавычки для двух обратных косых черт, например:
INCLUDEPATH += "C:\\OpenCV\\build\\include\\opencv\\cv.h"
Вы также нуждаетесь в frontslash в #include
в вашем .cpp файле, например:
#include <opencv/cv.h>
Когда вы это сделаете, удалите папку сборки. Это папка с очень сложным именем типа build-untitled-Desktop_Qt_5_7_0_MSVC2015_32bit-Release
. Затем в меню "Построение" нажмите "Запустить qmake". Когда вы все это сделали, он должен скомпилироваться.