Я реализую iOS фреймворк, написанный на Swift. Эта структура имеет внутреннюю зависимость от библиотеки C на основе * stati c. Чтобы заставить его работать и на основе некоторых уроков, я создал карту модулей, похожую на эту:
framework module Module {
umbrella header "Module.h"
explicit module ModuleDep {
private header "header1.h"
}
export *
}
На основании этого я могу включить C код в Swift, например:
import Module.ModuleDep
При экспорте фреймворка вручную все работает нормально. Это верная вещь, я хочу иметь поддержку Cocoapods для моей платформы с видимостью кода (проще для отладки). Подспе c, которое заставляет его работать, было следующим (некоторые части опущены):
Pod::Spec.new do |s|
s.platform = :ios
s.ios.deployment_target = '12.0'
s.module_map = "Module.modulemap"
s.source_files = "Module/*.{h,swift}", "ModuleDep/*.h"
s.vendored_libraries = "ModuleDep/*.a"
s.swift_version = "5.1"
end
Насколько я понимаю, vendored_libraries
используется, когда это артефакт, который вы предоставляете своим пользователям, и что Вот почему мне не нравится это решение.
Я также попробовал этот вариант spe c:
Pod::Spec.new do |s|
s.platform = :ios
s.ios.deployment_target = '12.0'
s.module_map = "Module.modulemap"
s.source_files = "Module/*.{h,swift}", "ModuleDep/*.h", "ModuleDep/*.a"
s.swift_version = "5.1"
end
, но он не компилируется.
Так каков правильный способ сделать это? Или что я сделал не так?