Ошибка установки какао-бобов: "Цель отменяет настройку сборки SWIFT_VERSION"

Я пытаюсь установить Cocoalumberjack как модуль и получаю эту ошибку:

ProjectName [Release] цель перекрывает SWIFT_VERSION параметр сборки, определенный в `Pods/ Целевые файлы поддержки /Pods-ProjectName/Pods-ProjectName.release.xcconfig'. Это может привести к проблемам с установкой CocoaPods

Файл pod xcconfig содержит это:

SWIFT_VERSION = 3.0

Но мой проект уже использует Swift 3., поэтому я не понимаю, почему это несоответствие.

xcrun swift -version

Apple Swift версия 3.0 (swiftlang-800.0.46.2 clang-800.0.38)

Однако я не вижу SWIFT_VERSION, в частности, нигде в настройках сборки XCode, и если я наберу swift в качестве поискового запроса в настройках сборки XCode, я не смогу увидеть что-либо в любом месте, даже похожее на номер версии Swift.

Кроме того, установка pod продолжает:"Используйте $(inherited) флаг ", чтобы решить проблему. Однако мои настройки сборки XCode другие флаги компоновщика уже имеют этот флаг $(унаследованный), так почему же это не решает проблему?

(Xcode 8)

3 ответа

Решение

Это немного не интуитивно понятно, но вам нужно сделать следующее:

1) Поиск "SWIFT_VERSION" в настройках вашего проекта

2) вы увидите запись "Использовать версию Legacy Swift Language"

  • Если вы уже выбрали какое-либо значение, оно будет показано жирным шрифтом

3) Выберите запись (не значение) и нажмите "УДАЛИТЬ", жирность должна исчезнуть.

4) Повторите те же шаги, но теперь для вашей цели (тот, что со значком приложения)

5) Закрыть XCode

6) Запустите "pod install" снова

7) Откройте свой проект и ОЧИСТИТЕ ЭТО (Shift + Command + K)

Теперь все должно работать правильно.

НОТА:

Специально для "Cocoalumberjack" убедитесь, что ваш модуль устанавливает версию 3.0+, если он не запускает "обновление sudo pod", так как версии, предшествующие этому, не будут работать с Swift 3.

РЕДАКТИРОВАТЬ:

Я почти уверен, что в данный момент обработка Cocoapods немного ошибочна, поскольку я иногда сталкивался с тем, что это работает, а с другими - нет. Однако имейте в виду, что вы можете установить флаг "SWIFT_VERSION" непосредственно для каждой платформы:

1) Выберите проект Pods (в ​​вашем проекте).

2) Выберите цель, которую вы хотите установить, и найдите флаг "SWIFT_VERSION" специально для этой цели.

3) Очистить и восстановить.

Вам нужно удалить любые переопределенные настройки сборки "Использовать Legacy Swift Language Version" из ваших целей.

Это не совсем полезно, так как удалить его невозможно.

Вы либо наследуете значение, либо назначаете значение, и после присвоения невозможно вернуться к значению $(унаследованному) из-за того, как пользовательский интерфейс построен на xcode (в некоторых вариантах у вас есть "пользовательское" значение). где вы можете добавить это, но не на все виды значений).

Так что это своего рода тупик без реальных решений.

Другие вопросы по тегам