Qt Creator не может найти заголовки (говорит: «Нет такого файла или каталога») - PullRequest
16 голосов
/ 05 марта 2012

Как мне сказать Qt Creator 2.4.1 (на основе 32-битной версии Qt 4.7.4), где искать по умолчанию для заголовочных файлов?

Когда я открываю файл Cв Qt Creator и сказать

#include <stdio.h>

он подчеркивает строку и говорит

stdio.h: No such file or directory

Я хотел бы сказать ему искать заголовки в каталоге по моему выбору;как мне это сделать?

Обновление

Наверное, мне следует также спросить: возможно ли это даже ?Или я должен создавать целый проект каждый раз, когда хочу редактировать отдельный файл C ++?

Ответы [ 6 ]

13 голосов
/ 08 марта 2012

Я часто сталкивался с этой проблемой. Я могу воспроизвести его на своем компьютере прямо сейчас (Mac OS).

Похоже, что QtCreator должен иметь проект для правильной обработки анализа путей GCC (поверх путей каркасов Qt).
Процесс, используемый Qt для поиска заголовков, заключается в том, что он запускает GCC (или ваш компилятор в Windows) со специальными аргументами, которые заставляют его выводить пути, по которым компилятор находит свои заголовки. НО , чтобы сделать это, у него должен быть проект, связанный с вашими файлами, потому что он использует этот проект, чтобы определить, какой набор инструментов использовать, таким образом, где находится GCC.

Таким образом, ответ таков: создайте проект, всегда , чтобы использовать синтаксический анализ.
Обратите внимание, что очень важно, чтобы при создании этого проекта вы определяли, какую версию Qt SDK и цепочку инструментов вы будете использовать, в противном случае нажатие клавиши управления синтаксисом не будет работать.

Возможно, вы найдете несколько интересных способов использования файла проекта Qt, хотя вы не используете Qt SDK или не используете Creator для создания вашего проекта. Смотрите ответ на аналогичный вопрос здесь: https://stackoverflow.com/a/5817226/389405

Обратите внимание, что я лично использую этот метод с файлом .pro, который просто перечисляет все подкаталоги моего проекта, и со всеми отключенными сочетаниями клавиш для сборки, так что я использую только Qt Creator в качестве редактора. Подсветка / связывание синтаксиса потрясающе и исключительно быстро, намного, намного быстрее, чем Eclipse!

Для этого просто введите qmake -pro в каталоге вашего проекта. Это создаст файл [DIR].pro, который вы можете удалить в любое время.

Год назад я исправил ошибку в аспекте этого синтаксического анализа, который меня беспокоил: https://bugreports.qt.io/browse/QTCREATORBUG-4846, причина в том, что используемый мной компилятор выводит свои данные на французском, а не на английском языке. Они исправили код в 2.4, но он мог быть специфичным для Unix (см. Комментарии к проблеме для получения дополнительной информации), поэтому вы, вероятно, захотите проверить, может ли эта проблема быть применена к вашему делу.

Если ваша проблема сохраняется даже после создания проекта для вашей редакции, обязательно укажите ее на qt-project.org!

В противном случае единственное решение, которое я вижу, - это изменение исходного кода QtCreator. Вы можете найти в их последнем сообщении некоторую информацию о том, как внести свой вклад здесь: https://blog.qt.io/blog/2012/03/15/qt-creator-2-5-beta/ (и попробовать их новую бета-версию, которая поддерживает C ++ lambdas ).

1 голос
/ 14 марта 2012

Или я должен создавать целый проект каждый раз, когда я хочу отредактировать отдельный файл C ++?

Нет, вы можете включить отдельный файл в существующий проект одним щелчком правой кнопки мыши на корнедерева проекта - контекстное меню - добавить существующий файл.Вы можете назначить горячую клавишу для этого, а также для удаления файла из проекта, так что это будет быстро и легко использовать ваш любимый редактор и его среду.Вы можете посмотреть на это, как только открываете файл.К сожалению, в командной строке нет аргументов для назначения проекта по умолчанию (и его среды) для отдельного файла для его использования двойным щелчком в файловом менеджере.

Надеюсь, это поможет.

1 голос
/ 13 марта 2012

Отдельные файлы C ++ можно редактировать, но, скорее всего, вы потеряете функциональность # include и autocomplete, среди прочего.Я лично каким-то образом храню все свои проекты в Qt, будь то простая программа с графическим интерфейсом, которая выполняет одну задачу, поэтому я могу отлаживать ее (GDB, похоже, не нравятся программы командной строки, по крайней мере, по моему опыту) или использовать "Простой C ++"командная строка "проект для не зависящих от Qt проектов.

1 голос
/ 06 марта 2012

какую операционную систему и компилятор вы используете и версию обоих? Проверьте правильность переменных среды установки, например, где находятся заголовки c ++ ?. Можно добавить путь «включений ваших заголовков» к конфигурации проекта на левой панели, перейти к «проект - программа - цель» и добавить путь включений. другое - добавить полный путь к расположению стандартных заголовков c ++ к переменной «includepath» в вашем файле .pro.

0 голосов
/ 28 мая 2019
add INCLUDEPATH to "project.pro" file

example for raspberry pi qt projects:
# Qt Creator can't find headers (says: “No such file or directory”)
# add compile includes
INCLUDEPATH += /home/user/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/libc/usr/include/ \
               /home/user/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/libc/usr/include/arm-linux-gnueabihf/
# pi rootfs includes
INCLUDEPATH += /home/user/raspi/sysroot/usr/include/
0 голосов
/ 06 марта 2012

Это зависит от того, какой набор инструментов определен для текущего проекта.

Набор инструментов определен в Цепи инструментов-Параметры-Построение и Запуск-Инструменты.Большинство из них определяются автоматически, но вы можете добавить свой собственный.

Нет никакой цепочки инструментов по умолчанию, поэтому вам нужен проект для тех заголовков, которые будут найдены в выбранной цепочке инструментов.

...