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", где вы можете добавить это, но не для всех видов значений).
Так что это своего рода тупик без реальных решений.