Проект Swift, над которым я работаю, имеет следующую структуру
STATIC lib --- STATIC lib
| |
FRAMEWORKA FRAMEWORKB
\ /
App
Там, где фреймворки A и B интегрируют стороннюю статическую библиотеку с некоторыми заголовками, я написал собственную карту модулей в Framework A & B
Приложение, с другой стороны, встраивает FRAMEWORK A & B и, естественно, получает ошибку переопределения модуля
Есть несколько способов, которыми я смог решить эту проблему
1: с помощьюслабое связывание (определяющее .a) необязательно, в отличие от требуемого в проекте FramworkB (хотя эта функция не предназначена для такого рода хаков, как я слышал)
2: НаименованиеМодуль target-c по-разному в Framework A и B, таким образом, он заставляет компоновщик успешно запустить приложение, но я получаю это сообщение во время выполнения в журналах консоли
в FRAMEWORKA
module ACore {
header "ACoreConstants.h"
}
вFRAMEWORKB
module Acorn {
header "ACoreConstants.h"
}
Класс ACore реализован в / Users / пользователь / Library / Developer / Xcode / DerivedData / TesterApp-anudhiavmakfclfdxilmgmfzordl / Build / Products / Debug-iphonesimulator / FrameworkA.framework / FrameworkA (0x108ad2908) и /Users/user/Library/Developer/Xcode/DerivedData/TesterApp-anudhiavmakfclfdxilmgmfzordl/Build/Products/Debug-iphonesimulator/rameworkBR0F0FF0) (0). Один из двух будет использован. Какой из них не определен.
Есть ли лучший в целом более чистый способ делать подобные вещи?