Компилятор аннотаций QtCreator не находит stdbool.h - PullRequest
1 голос
/ 06 мая 2020

Я использую QtCreator 4.11.2, установленный через MSYS2, с включенным ClangCodeModel.

Вот моя программа (это результат создания New Non-QT Plain C Application):

#include <stdio.h>
#include <stdbool.h>

_Bool a;
bool b;

int main()
{
    printf("Hello World!\n");
    return 0;
}

Файл .pro по умолчанию не изменился:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += \
    main.c

Компилятор аннотаций выделяет ошибку, говоря, что stdbool.h не может быть найден. screenshot of problem

Но он не выдает ошибки для _Bool a;, поэтому он явно работает в режиме C99, но имеет некоторые проблемы с включенными путями. Параметр «Следить за символом под курсором» работает, открывая stdbool.h.

Мой вопрос: Как настроить пути включения для компилятора аннотаций или как-то иначе исправить эту проблему?

Мне не удалось понять, как установить параметры для компилятора аннотаций или даже какой двоичный файл компилятора он использует. В разделе Инструменты> Параметры> C ++> Модель кода> Диагностика c Конфигурация позволяет мне добавлять флаги -W, но не позволяет добавлять флаги -I, появляется красное сообщение о том, что параметр недействителен.

В разделе Инструменты> Параметры> Инспектор модели кода C ++ нет сообщений диагностики c, а журнал проверки модели кода показывает, что stdbool.h правильно найден и проанализирован, как msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.3.0/include/stdbool.h.

Если я отключу плагин ClangCodeModel, то ошибок нет, но я хотел бы использовать версию clang, если ее можно заставить работать, поскольку в целом она имеет хорошую диагностику.

Результат clang --version в приглашении оболочки: :

clang version 10.0.0 (https://github.com/msys2/MINGW-packages.git 3f880aaba91a3d9cdfb222dc270274731a2119a9)
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: F:\Prog\msys64\mingw64\bin

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

Набор, который я выбрал в QtCreator, - это автоматически определяемый Desktop Qt MinGW-w64 64bit (MSYS2)

То же самое симптомы возникают, если я создаю проект Plain C ++ и пытаюсь включить stdbool.h (который требуется для существования по стандарту C ++, хотя и не рекомендуется), хотя, что интересно, он принимает <cstdbool>.


I нашли обходной путь: включение в файл .pro строки:

INCLUDEPATH += F:/Prog/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.3.0/include/

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

...