我成功将静态库作为subspec
添加。我更喜欢这种方法,因为它默认使用我的pod附带的构建,并且使用户可以根据需要提供自己的构建。
如前所述,静态库是OpenSSL,但以下内容适用于任何静态库。我正在使用以下目录结构:
libraries/openssl-1.0.1e/include/openssl/*.h
libraries/openssl-1.0.1e/LICENSE
libraries/openssl-1.0.1e/lib/*.a
得到的子规格将会是:
s.subspec 'OpenSSL' do |openssl|
openssl.preserve_paths = 'libraries/openssl-1.0.1e/include/openssl/*.h', 'libraries/openssl-1.0.1e/include/LICENSE'
openssl.vendored_libraries = 'libraries/openssl-1.0.1e/lib/libcrypto.a', 'libraries/openssl-1.0.1e/lib/libssl.a'
openssl.libraries = 'ssl', 'crypto'
openssl.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/libraries/openssl-1.0.1e/include/**" }
end
逐行解析:
openssl.preserve_paths = 'libraries/openssl-1.0.1e/include/openssl/*.h', 'libraries/openssl-1.0.1e/include/LICENSE'
保留标题和许可文件。我们将使用以下标题。
openssl.vendored_libraries = 'libraries/openssl-1.0.1e/lib/libcrypto.a', 'libraries/openssl-1.0.1e/lib/libssl.a'
告诉 CocoaPods 我们将在 Pod 中发布上述静态库。这样可以保留文件,并相应地修改 LIBRARY_SEARCH_PATHS
。
openssl.libraries = 'ssl', 'crypto'
包含"其他链接器标志"中的库。
openssl.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/libraries/openssl-1.0.1e/include/**" }
告诉项目在哪里找到头文件。由于这是一个子规格,我们不能使用public_header_files
。
#include <openssl/dh.h>
)。文件夹结构libraries/openssl-1.0.1e
是否在项目根目录中? - Sandeep Kumar