Nano Hash - криптовалюты, майнинг, программирование

QT Creator не может разобрать очень простой проект

Я создал очень простой проект в QT Creator, файл *.pro выглядит следующим образом:

HEADERS += inc\1.h
SOURCES += src\1.cpp

Вот исходный код:

// 1.h
const int C = 1;

// 1.cpp
#include "1.h"

int main() {
    return C;
}

QT Creator успешно открывает этот «проект», но не может его разобрать. F2 не работает для константы C, заголовок 1.h не найден.

Пожалуйста, посмотрите на скриншот, который описывает проблему:

Скриншот, показывающий структуру проекта

Самое странное, что то же самое работает на другой моей машине с аналогичной установкой QT SDK 5.0! Не могли бы вы посоветовать, где я ошибаюсь?


  • Должно быть #include "inc/1.h"? 17.01.2013
  • Нет, надеюсь, не должно. Может быть, вы имеете в виду ../inc/1.h - это работает, но мне нужно, чтобы мои включения были найдены без полных путей к ним. Зачем мне нужна часть HEADERS файла .pro, если я должен указать полный путь? 17.01.2013
  • Добавление папки inc в INCLUDE_PATH тоже не работает. Самое странное, что тот же проект хорошо анализируется на очень похожей другой машине. У меня проблема с включением и анализом синтаксиса в большом проекте, где я не могу изменить директивы #include, поэтому я создал этот простой пример, чтобы продемонстрировать проблему. 17.01.2013
  • Это может быть совершенно не связано, но я видел эту ошибку, и в проекте не отображались исходные файлы. После установки правильного пути для версии Qt в текущем Ките (у меня /usr/bin/qmake-qt5) вдруг все появилось. 29.11.2017

Ответы:


1

HEADERS должен отображать заголовочные файлы вашего собственного проекта, точно так же, как SOURCES перечисляет исходные файлы.

Если вы хотите включить внешние файлы заголовков, вы должны вместо этого добавить их папки в INCLUDEPATH:

INCLUDEPATH += inc

Следующий файл .pro отлично работает в Qt Creator 2.5.0, Qt 4.6.1:

QT       += core
QT       -= gui

TARGET = test
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += \
    src/1.cpp

INCLUDEPATH += inc

Попробуйте именно этот файл .pro, дайте ему 3 секунды на анализ и сообщите мне, сработало ли это.

17.01.2013
  • Я попробовал подход с INCLUDEPATH, он тоже не работает на моем компьютере. Может быть, это какой-то странный гейзенбаг в новейшем QT, я не знаю. Я попробую предыдущий v4 SDK и расскажу вам) 17.01.2013
  • Можете ли вы скомпилировать его? И используете ли вы Qt Creator 2.6.1 на другом компьютере (где он работает)? 17.01.2013
  • Большое спасибо за советы, я попытался скомпилировать его, и это не удалось, и я понял, что мой QT Kit (что бы это ни было) не имеет компилятора по умолчанию. Компилятор обязательно должен использоваться для разбора исходников, поэтому я думаю, что это было основной причиной. Теперь все работает отлично. 17.01.2013
  • Я не пытался компилировать проекты, потому что я просто хотел использовать Creator для работы с большим проектом, который использует внешнюю систему сборки. 17.01.2013
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..