#c #qt #include
#c #qt #включить
Вопрос:
Я пытаюсь скомпилировать код QT, но по какой-то причине компилятор жалуется, что не может найти включаемые файлы, даже если я указал их пути в моем makefile
asd.cpp
#include <QtWidgets/qtwidgetsglobal.h>
int main(int argc, char **argv)
{
}
Команда компиляции
g -I. -I/home/marti/Qt/6.2.2/gcc_64/include/QtCore -I/home/marti/Qt/6.2.2/gcc_64/include/QtGui -I/home/marti/Qt/6.2.2/gcc_64/include/QtWidgets -c asd.cpp -o out/asd.o
Ошибка
asd.cpp:1:10: fatal error: QtWidgets/qtwidgetsglobal.h: No such file or directory
1 | #include <QtWidgets/qtwidgetsglobal.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Как вы можете видеть, я указал путь к QtWidgets
..Я понятия не имею, почему он не может найти QtWidgets/qtwidgetsglobal.h
Комментарии:
1. Попробуйте вместо этого
#include <qtwidgetsglobal.h>
2. Если вы пытаетесь
#include <QtWidgets/qtwidgetsglobal.h>
, то параметр компилятора, вероятно, должен быть-I/home/marti/Qt/6.2.2/gcc_64/include
. Обратите внимание, однако, чтоqtwidgetsglobal.h
это не документированный заголовок. Вместо этого вы должны указать требуемые реальные заголовки.3. @G.M. Ах да.. Я действительно должен перейти на
-I/home/marti/Qt/6.2.2/gcc_64/include
, и это работает. Спасибо!4. Или используйте правильную систему сборки, например, qmake или cmake, которая добавляет эти включения и библиотеки гораздо более разумным способом.
Ответ №1:
Обратите внимание, что вы не включаете файлы заголовков напрямую. Вместо этого вы включаете «псевдонимы». В вашем случае вы, вероятно, просто хотите:
# include <QWidget>
Смотрите также документацию для QWidget, в которой явно указано, что в самом верху страницы.