2017-01-06 34 views
-1

我有本地构建的C库(.h.a文件),我想包含在基于Swift的CocoaPods窗格中。如何配置podspec以取决于.a文件和module.map?使用正常的非CocoaPods Xcode项目,我只需拖入包含includelib的目录,然后添加一个module.map。随着CocoaPods我不能这样做,因为pod install将覆盖Xcode项目文件。 s.library将不起作用,因为静态库不在任何地方。我试过s.vendored_libraries,但module.map仍然不知道Xcode,最终结果是从我的Swift文件import foo是一个错误。CocoaPods项目依赖于本地静态C库

编辑:我试过使用preserve_paths,vendored_librariesxcconfig作为answered here。问题仍然是如何从Swift导入模块。

编辑2:我也尝试过使用module_map指向我module.map文件documented here,但可悲的CocoaPods 1.1.1崩溃([!] Oh no, an error occurred.)。

+0

您是否尝试过在Swift编译器 - 项目设置中的搜索路径下添加模块以导入路径? – user3237732

回答

-1

我明白了。在我的情况下,我取决于使用https://github.com/ashtons/libtiff-ios为iOS预编译的libtiff C库(x86和arm)。

我用subspec作为outline here。这里是podspec subspec snippet,假设静态库位于libtiff之外,位于pod模块的根目录之外。

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