Я использую 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
не может быть найден.
Но он не выдает ошибки для _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/
заставляет компилятор аннотаций работать правильно, однако это нежелательно, так как мне пришлось бы менять его всякий раз, когда я переключаюсь Наборы, потому что он также передает это фактическому компилятору сборки, а не только компилятору аннотаций.