Карфаген-зависимый проект, ориентированный на iOS 10, не может быть собран, но когда он нацелен на iOS 11, успешен

У меня есть основанная на Swift библиотека Cocoa Framework, которая использует module.modulemap поддерживать библиотеку на основе C (PortSIPLib). Проект прекрасно строится в Xcode.

Я использую фреймворк в другом проекте, используя Carthage, который ориентирован на iOS 10.

Когда Карфаген строит каркас (carthage update --platform ios) это терпит неудачу с

ld: warning: ignoring file /Users/.../Carthage/Checkouts/wesipkit/PortSIPLib/PortSIPLib.framework/PortSIPLib, missing required architecture i386 in file /Users/.../Carthage/Checkouts/wesipkit/PortSIPLib/PortSIPLib.framework/PortSIPLib (3 slices)
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_PortSIPSDK", referenced from:
      objc-class-ref in SIPServiceProvider.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Но если я нацеливаюсь как на проект, так и на фреймворк, чтобы использовать iOS 11, Carthage собирается успешно?

Я попытался использовать оба параметра конфигурации отладки и выпуска, оба терпят неудачу

Есть ли другой подход, который я могу использовать? Есть ли другие настройки, которые я должен настраивать?

Могу ли я в любом случае сказать Carthage/Xcode игнорировать попытки сборки для симулятора? Мне не нужно запускать его в симуляторе

Проблема не в том, что (PortSIPLib) отсутствует i386 Реализация, проблема в том, почему он работает, ориентируясь на iOS 11, а не на iOS 10?

Я буквально провел неделю, пытаясь диагностировать эту проблему, вплоть до воссоздания проекта фреймворка, и только сейчас я понял, что проблема связана с целевым уровнем iOS

Xcode version 9.1 beta (9B46)

Фреймворк module.modulemap для PortSIPLib

module PortSIPLib {
    umbrella header "PortSIPLib.framework/Headers/PortSIPSDK.h"
    header "PortSIPLib.framework/Headers/PortSIPErrors.hxx"
    header "PortSIPLib.framework/Headers/PortSIPEventDelegate.h"
    header "PortSIPLib.framework/Headers/PortSIPTypes.hxx"
    header "PortSIPLib.framework/Headers/PortSIPVideoRenderView.h"

    export *
    module * { export * }
}

Это хранится в $(SRCROOT)/PortSIPLib вместе со структурой PortSIPLib

0 ответов

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