我有本地构建的C库(.h
和.a
文件),我希望将其包含在基于Swift的CocoaPods pod中。如何配置podspec以依赖.a
文件和module.map
?使用普通的非CocoaPods Xcode项目,我只需拖动包含include
和lib
的目录,然后添加module.map
。使用CocoaPods我不能这样做,因为pod install
将覆盖Xcode项目文件。 s.library
将无效,因为静态库未在任何位置托管。我尝试了s.vendored_libraries
但是module.map
仍然未知Xcode,最终结果是我的Swift文件中的import foo
是错误的。
修改:我尝试使用preserve_paths
,vendored_libraries
和xcconfig
作为answered here。问题仍然是如何从Swift导入模块。
编辑2:我也尝试使用module_map
将module.map
文件指向documented here,但遗憾的是CocoaPods 1.1.1崩溃([!] Oh no, an error occurred.
)。
答案 0 :(得分:0)
我得到了它的工作。在我的情况下,我依赖于使用https://github.com/ashtons/libtiff-ios为iOS(x86和arm)预建的libtiff C库。
我使用了一个子规格为outline here。这是podspec subspec片段,假设静态库位于pod模块根目录的libtiff
处。
s.subspec 'libtiff' do |libtiff|
libtiff.source_files = 'libtiff/include/*.h'
libtiff.public_header_files = 'libtiff/include/*.h'
libtiff.preserve_paths = 'libtiff/include/*.h'
libtiff.vendored_libraries = 'libtiff/lib/libjpeg.a', 'libtiff/lib/libpng.a', 'libtiff/lib/libtiff.a', 'libtiff/lib/libtiffxx.a'
libtiff.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/libtiff/include/**" }
# you can't specify "libz" here, must specify "z", see https://github.com/CocoaPods/CocoaPods/issues/3232
libtiff.library = 'z'
end