Добавление MailCore2 через Carthage с поддержкой Swift для Xcode
Пытаюсь быть как можно более ванильным:
Новый проект->OS X-> Приложение-> Язык (Swift) Имя (MailCoreTest) Закрыть проект Добавить Cartfile в корень проекта с одной строкой в нем: github "MailCore/mailcore2" Запустить обновление carthage --platform macosx из root проекта Получите пару предупреждений, но никаких реальных проблем:
/Users/theuser/Documents/XCode/MailCoreTest/Carthage/Checkouts/mailcore2/src/async/imap/MCIMAPAsyncSession.cpp:793:66: warning: 'gmailUserDisplayName' is deprecated [-Wdeprecated-declarations]
/Users/theuser/Documents/XCode/MailCoreTest/Carthage/Checkouts/mailcore2/src/async/imap/MCIMAPAsyncSession.cpp:793:66: warning: 'gmailUserDisplayName' is deprecated [-Wdeprecated-declarations]
Снова откройте проект в XCode. На вкладке "Общие" целевых параметров приложения в разделе "Встроенные двоичные файлы" я перетаскиваю MailCore.framework, созданный Carthage. Я также добавляю dSYM в фазу копирования файлов каталога продуктов. На этом этапе приложение успешно собирается, но когда я добавляю:
#import <MailCore/MailCore.h>
#import <MailCore/MCOConstants.h>
В файл Swift-Bridging-Header.h и добавление его в настройку сборки заголовочного файла Objective-C я получаю множество ошибок сборки:
MailCoreTest Group
/Users/theuser/Documents/XCode/MailCoreTest/Carthage/Build/Mac/MailCore.framework/Headers/MCIndexSet.h
/Users/theuser/Documents/XCode/MailCoreTest/Carthage/Build/Mac/MailCore.framework/Headers/MCIndexSet.h:15:10: Include of non-modular header inside framework module 'MailCore.MCIndexSet'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCIMAPConnectOperation.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCIMAPNoopOperation.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCMainThread.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCMXRecordResolverOperation.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCNNTPCheckAccountOperation.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCONNTPDisconnectOperation.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCOPOPNoopOperation.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCOSMTPLoginOperation.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCPOPNoopOperation.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCSizeFormatter.h'
/Users/theuser/Documents/XCode/MailCoreTest/<module-includes>:1:1: Umbrella header for module 'MailCore' does not include header 'MCSMTPNoopOperation.h'
/Users/theuser/Documents/XCode/MailCoreTest/MailCoreTest/Swift-Bridging-Header.h
/Users/theuser/Documents/XCode/MailCoreTest/MailCoreTest/Swift-Bridging-Header.h:12:9: Could not build module 'MailCore'
Failed to import bridging header '/Users/theuser/Documents/XCode/MailCoreTest/MailCoreTest/Swift-Bridging-Header.h'
Странно то, что у меня это работает в другом проекте. Я даже могу запустить обновление Карфагена против него, и ничто не сломается. После нескольких часов попыток воспроизвести новый проект, я не могу заставить его работать. Я, должно быть, что-то упускаю, но я не могу понять, что это или даже где искать.
Только что во время тестирования я попытался настроить параметры сборки в "Target" и установить "Разрешить немодульные включения в модули инфраструктуры" на YES, но получить тот же результат - и в другом работающем проекте, который у меня есть, установлено значение NO.
1 ответ
Нужно Карфагену, чтобы оформить последний коммит. Изменение файла корзины на:
github "MailCore/mailcore2" "master"
Сделал магию