Xcode 12, Как подавить включение двойных кавычек в предупреждения заголовка фреймворка на протяжении всего проекта

В Xcode 12 есть новое предупреждение по умолчанию, которое будет выдавать предупреждение везде, где вы #import или #include с "quotes.h" вместо <brackets.h>.

Предупреждение: двойные кавычки включают в заголовок фреймворка

Как отключить это предупреждение для всего проекта?


person Albert Renshaw    schedule 17.09.2020    source источник


Ответы (3)


Я думаю, что более простой способ - зайти в настройки сборки проекта и просто установить для параметра Quoted Include In Framework Header значение Нет:

введите описание изображения здесь

person Silas    schedule 21.09.2020
comment
Даже лучше! Спасибо - person Albert Renshaw; 21.09.2020
comment
Да, согласен, это мое решение! :) Даже если внутри капсул каждый раз, когда вы выполняете pod install, project update предлагает обновить. - person arcangel06; 22.09.2020
comment
Я давний разработчик linux / java / javascript, который почти все делает из командной строки. С момента разработки кроссплатформенности я нахожу способ Apple делать вещи очень разочаровывающими и использую fastlane для всех своих развертываний. Может кто-нибудь объяснить мне, как это сделать без графического интерфейса XCode? У меня есть файл build.xcconfig, но я не знаю, как его там установить. Кроме того, я попытался открыть свой проект в XCode, но я все равно не вижу этого параметра. Ваше здоровье. - person crowmagnumb; 13.10.2020
comment
ОБНОВЛЕНИЕ: я нашел настройку, но она была в разделе Все - Комбинированное (не Базовое - Комбинированное), как показано на скриншоте выше. Для него установлено значение «Нет», но я получаю это предупреждение с каждым модулем в моем проекте, и оно забивает мои выходные данные, поэтому я не могу найти реальную проблему, с которой я столкнулся. Вздох. - person crowmagnumb; 13.10.2020
comment
@crowmagnumb Может быть, попробуйте мое оригинальное решение, чтобы узнать, работает ли оно и на ваших модулях: stackoverflow.com/a/63947318/2057171 - person Albert Renshaw; 15.12.2020

Вы можете отключить эти предупреждения для всего проекта, перейдя к настройкам сборки вашего проекта, найдя поле других флагов компоновщика и добавив следующий флаг:

-Wno-quoted-include-in-framework-header

person Albert Renshaw    schedule 17.09.2020
comment
Примечание: если выдается предупреждение, если вы щелкните правой кнопкой мыши по предупреждению и выберите «Показать в журнале», вам будет представлено предупреждение в формате -Waaa-bbb-ccc, с любым предупреждением вы можете изменить его на -Wno-aaa-bbb-ccc и добавить в качестве флага компоновщика для подавления проекта. широкий. - person Albert Renshaw; 18.09.2020
comment
Не работает у меня на Xcode 12 (последняя сборка). -Wno-quoted-include-in-framework-header -Wquoted-include-in-framework-header - person arcangel06; 18.09.2020
comment
@ arcangel06 вы должны использовать только тот, который начинается с -Wno-; иногда с флагами компоновщика мне нужно выйти из xCode и перезапустить, чтобы они вступили в силу, но в большинстве случаев это работает в следующей сборке. - person Albert Renshaw; 19.09.2020
comment
К сожалению, это не работает, если FaceBook SDK включает - person JeffB6688; 18.05.2021
comment
@ JeffB6688 Убедитесь, что вы очистили проект, выйдите и перезапустите xcode и подождите минуту, пока оптимизатор не просканирует все файлы. Facebook SDK, вероятно, очень большой и требует немного времени для обновления в фоновой задаче. - person Albert Renshaw; 19.05.2021
comment
@AlbertRenshaw Да, я пробовал. Я просто не могу избавиться от этих предупреждений. - person JeffB6688; 20.05.2021

Похоже, эта проблема исправлена ​​как часть Cocoapods 1.10.1 (официально не выпущен , на момент написания этой статьи). Однако вы можете использовать Cocoapods версии 1.10.0.rc.1 временно, пока 1.10.1 не станет официально доступной.

gem install cocoapods -v '1.10.0.rc.1'

Другой вариант - обновить ваш Podfile (добавить код ниже), чтобы отключить установку флажка предупреждения CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER для всех модулей в вашем проекте.

post_install do |installer|
  installer.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
          config.build_settings['CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER'] = 'NO'
      end
    end
  end
end
person iHS    schedule 13.10.2020
comment
Я сделал это, деинтегрировать и установить модуль - person Almeida; 18.03.2021
comment
К сожалению, это не работает, если FaceBook SDK включает - person JeffB6688; 18.05.2021