podspec引入library

自己写的库需要引用第三方的library,咋整?

s.vendored_libraries = 'YourPod/Lib/**/*.a'

就这?!那我还记录个啥。。。

通过vendored_libraries引入,仅会在library search path中添加library。但是头文件并不会自动引入。代码中引用该library会提示找不到文件。
需要通过配置xcconfig的HEADER_SEARCH_PATHS属性,指定library header所在的位置:

s.pod_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '${PODS_ROOT}/YourPod/YourPod/Lib/include/**'}

配置完HEADER_SEARCH_PATHS后又发现个问题,这个值是写入到Pods项目 > YourPod的Target > Build Settings > HEADER SEARCH PATHS 内的,用于Pods项目编译你的YourPod库时找到你的library头文件,但是!这tm是个绝对地址。
这个地址分为两种情况:

开发你的pod代码库时:

一般情况都是用pod lib create YourPod 命令创建pod库,里面会生成YourPod源码文件夹,还会生成Example项目用于调试,YourPod源码文件夹和Example是在同一级目录的,YourPod源码(包含你的library)在Pods项目内编译时,YourPod源文件相对于Pods项目的路径为:'${PODS_ROOT}/../../YourPod',所以podspec内编辑:

s.pod_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '${PODS_ROOT}/../../YourPod/Lib/include/**'}

完成pod后正式引用时:

YourPod原代码会通过git下载到Pods项目文件夹内,YourPod源码(包含你的library)在Pods项目内编译时,YourPod源文件相对于Pods项目的路径为:'${PODS_ROOT}/YourPod/YourPod',所以正式的podspec内编辑:

s.pod_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '${PODS_ROOT}/YourPod/YourPod/Lib/include/**'}

所以针对不同阶段,需要注意HEADER_SEARCH_PATHS的配置。
或者直接用下面一种发布版的配置,然后在开发阶段将YourPod源码文件夹复制一份到 Example/Pods/文件夹下,模拟一份正式版引用'${PODS_ROOT}/YourPod/YourPod/Lib/include/**'的环境。

暂时只有这个笨办法,有更优解吗?

你可能感兴趣的:(podspec引入library)