Для 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
?
Это потому, что вы также должны включить каталог «QtCore» через «isystem», в дополнение к базовому каталогу включения Qt. Это потому, что Clang находит более конкретное включение (QT -I также модули) и использует его. Увидеть Руководство Clang для -системная информация о том, как работает включает.
Эффективно вы хотите сделать следующее:
contains(QT,"core") {
QMAKE_CXXFLAGS *= $$join(QMAKE_INCDIR_QT, " -isystem", "-isystem", "/QtCore")
}
И повторите это для всех стандартных модулей Qt (Designer, Gui, Help, Network и т. Д.).