创建依赖于静态库的Pod

时间:2017-05-18 00:26:29

标签: ios macos cocoapods

我正在尝试创建依赖于静态库的Pod(.a文件+标题,其结构应该保留用于我的pod编译)并且我不想将我的静态库链接到将使用我的pod的Application ,它只是内部依赖,没有标题或lib本身应该暴露在Pod之外。 如何为这种情况创建podspec?

2 个答案:

答案 0 :(得分:0)

看起来这会有点混乱......一种方法是将静态库重新编译为dylib,然后根据需要加载符号。通过这样做,您不必触摸.podspec文件。我假设您正在使用Swift 3并希望从库中加载C函数。

如果您没有源或无法重新编译静态库,您可以使用this指南将其转换为dylib。

我将添加一个示例,说明如何从SELECT COUNT(*) FROM table_name; 动态加载CCHmac函数

libcommonCrypto.dylib

如果您无法从头文件中加载符号,则必须自行定义。

/// - Returns: A function pointer to CCHmac from libcommonCrypto
private static func loadHMACfromCommonCrypto() -> CCHmac
{
    let libcc = dlopen("/usr/lib/system/libcommonCrypto.dylib", RTLD_NOW)
    return unsafeBitCast(dlsym(libcc, "CCHmac"), to: CCHmac.self)
}

答案 1 :(得分:0)

我最终将包含标题的静态库包装到framework文件夹中,并将此框架添加到vendored_frameworks podspec字段并添加标题搜索路径

s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(FRAMEWORK_SEARCH_PATHS)/FrameworkName.framework/Headers" }

与CocoaPods一起,我能够将我的二进制文件和标题分别链接到Xcode框架目标并使用Carthage分发我的库