将静态库添加到podspec
我的podspec需要一个静态库(OpenSSL)。 为了方便起见,我正在运送带有吊舱的图书馆。
静态库包含:
- 二进制文件:
MyPod/openssl/bin/libcrypto.a
和MyPod/openssl/bin/libsll.a
- 标题:
MyPod/openssl/include/openssl/*.h
- 它自己的许可证(除了我的项目许可证):
MyPod/openssl/include/LICENSE
在我的podspec中expression这个的正确方法是什么? 我见过使用以下属性组合的各种示例,我正在尝试不同的组合:
source_files public_header_files private_header_files preserve_paths libraries xcconfig vendored_libraries
或者甚至更好,我可以在subspec中定义这个静态库吗?
我设法添加静态库作为subspec
。 我更喜欢这种方法,因为它默认使用我的pod附带的版本,并且还允许用户提供他们自己的版本(如果他们愿意的话)。
如上所述,静态库是OpenSSL,但以下适用于任何静态库。 我正在使用以下目录结构:
libraries/openssl-1.0.1e/include/openssl/*.h libraries/openssl-1.0.1e/LICENSE libraries/openssl-1.0.1e/lib/*.a
由此产生的subspec将是:
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我们正在发布上面的静态库。 这将保留文件,并相应地修改LIBRARY_SEARCH_PATHS
。
openssl.libraries = 'ssl', 'crypto'
包含“其他链接器标志”中的库。
openssl.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/libraries/openssl-1.0.1e/include/**" }
告诉项目在哪里find标题。 我们不能使用public_header_files
因为这是一个subspec
。
你可以尝试这样做,就像在这里完成https://github.com/krzak/OpenSSL ,或者只是使用这个Pod与你项目,如果你发现它convienence
pod 'OpenSSL', :podspec => 'https://raw.github.com/krzak/OpenSSL/master/OpenSSL.podspec'