Комментарии 8
Совершенно не ясно зачем тогда было переезжать, все проблемы которые описаны решены в CocoaPods.
Нормальное решение это совместное использование CocoaPods и SPM.
А нельзя было сделать, например, кеш собранных либ кокоаподс и через симлинк подсовывать в DervedData папку теми же скриптами, например?
Я буквально пару недель назад наоборот, выдирала с кровью Carthage из проекта с 30 подпроектами. Прокляла и "архитектора" и картаж, который впиливали не очень умные люди. Большей мусорки не видела, наверное, никогда.
DerivedData - это внутренности реализации Xcode. Лезть туда совершенно не хотелось. Carthage хорош как раз тем, что живет отдельно от Xcode. Если нам нужно будет избавится от него и всех зависимостей, то все, что нужно сделать - это убрать Cartfile и линковку фреймворков в конфигурации xcodegen. Не пойму чем Carthage вас так обидел :)
Интересный опыт, спасибо за статью! Тоже меняли CocoaPods на Carthage.
Есть пара вопросов:
Вы все сторонние зависимости линкуете статически? Не рассматривали вариант изменения настроек сборки через файл xcconfig, который можно передать в переменной окружения XCODE_XCCONFIG_FILE?
XcodeGen как-то самостоятельно резолвит и включает ресурсы статических фреймворков из папки проекта в Checkouts?
Все, но такой вариант не рассматривали. У вас есть такой опыт?
Нет. Мы решили это добавлением ресурсов в бандл приложния. Вот фрагмент конфигурации:
targets:
Joom:
sources:
- path: path_to_carthage/Carthage/Build/iOS/Static/DTCoreText.framework/default.css
group: Joom/Resources
Для статической линковки не использовали.
Но до появления поддержки xcframework в Carthage исключали архитектуру arm64 для симулятора через этот файл согласно инструкции, которую, судя по статье, вы тоже используете.
Как мы переходили с CocoaPods на Carthage