Сделать Xcode игнорировать предупреждения LLVM о сборке в стороннем проекте

У меня есть сторонний проект в моей рабочей области Xcode (это зависимость от моего основного проекта), и я хочу, чтобы Xcode игнорировал все предупреждения сборки из этого стороннего проекта.

Я хотел бы игнорировать все предупреждения сборки для группы Vendor/* в моем проекте с тех пор, когда я поместил весь свой сторонний код.

Возможные?

Ответ 1

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

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

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

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

На этапах вашей основной целевой сборки свяжите приложение со статической библиотекой.

Таким образом, вы сможете использовать сторонний код в своем приложении, имея разные настройки компилятора для стороннего кода.

Ответ 3

Перейдите к Фазы сборки > Скомпилировать источники. Опционально отфильтруйте список. Выберите те, которые вы хотите исключить, а затем дважды щелкните в пустой области в столбце Компилятор флагов. Добавьте -w и нажмите return:

Adding compiler flag to Build Phase

Ответ 4

если вы беспокоитесь только о предупреждении через включение, тогда вы можете обернуть свои включенные утверждения следующим образом:

#pragma clang diagnostic push
 // in reality, you will likely need to disable *more* than Wmultichar
#pragma clang diagnostic ignored "-Wmultichar"
#include <TheirLibrary/include.h>
#pragma clang diagnostic pop

если вы также хотите отключить предупреждения сборки, которые он генерирует, вы можете использовать -w или GCC_WARN_INHIBIT_ALL_WARNINGS = YES для сторонней цели, к которой вы привязываетесь или связываете.

В идеале вы будете отправлять отчеты поставщику, если он закрыт. если он открыт, то, возможно, вам следует просто исправить его самостоятельно.