Cocoa ошибка установки pod: "Цель переопределяет настройку сборки SWIFT_VERSION"

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

Цель ProjectName [Release] переопределяет конструкцию SWIFT_VERSIONнастройка, определенная в разделе "Поддержка Pods/Target" Файлы/Бобы-ProjectName/Бобы-ProjectName.release.xcconfig. Это может приводят к проблемам с установкой CocoaPods.

Файл pc xcconfig содержит следующее:

SWIFT_VERSION = 3.0

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

xcrun swift -version

Apple Swift версии 3.0 (swiftlang-800.0.46.2 лязг-800.0.38)

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

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

(Xcode 8)

Ответы

Ответ 1

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

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

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

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

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

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

5) Закрыть XCode

6) Запустите "pod install" еще раз

7) Откройте свой проект и CLEAN IT (Shift + Command + K)

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

Примечание:

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

EDIT:

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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