Неужели `clang-check` не соблюдает` -isystem`?

Для Clang и GCC, -isystem флаг добавляет «системный» путь включения, который вызывает компилятор не выдавать предупреждения, связанные с кодом, найденным в этих заголовках.

Тем не менее, работает clang-check в моем коде я вижу следующее предупреждение:

In file included from <myfile>.cpp:1:
In file included from <Qt-path>/gcc_64/include/QtCore/QCoreApplication:1:
In file included from <Qt-path>/gcc_64/include/QtCore/qcoreapplication.h:40:
<Qt-path>/gcc_64/include/QtCore/qobject.h:235:16: warning: Potential memory leak
return connectImpl(sender, reinterpret_cast<void **>(&signal),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.

…так что казалось бы, что clang-check не лечит -isystem включить пути в отличие от -I включить пути. Я неправильно использую инструмент или неверно истолковываю вывод (т. Е. Действительно ли это потенциальная ошибка в моем коде)? Есть ли другой способ явно игнорировать ошибки из заголовков Qt при запуске clang-check?

2

Решение

Это потому, что вы также должны включить каталог «QtCore» через «isystem», в дополнение к базовому каталогу включения Qt. Это потому, что Clang находит более конкретное включение (QT -I также модули) и использует его. Увидеть Руководство Clang для -системная информация о том, как работает включает.

Эффективно вы хотите сделать следующее:

contains(QT,"core") {
QMAKE_CXXFLAGS *= $$join(QMAKE_INCDIR_QT, " -isystem", "-isystem", "/QtCore")
}

И повторите это для всех стандартных модулей Qt (Designer, Gui, Help, Network и т. Д.).

1

Другие решения


По вопросам рекламы [email protected]