CocoaPods 在一个 Pod 中有多个模块,一个用于静态库,一个用于 swift



我正在为iOS创建一个Pod,它在引擎盖下使用OpenSSL提供加密API。

到目前为止,我已经设法从 Swift 调用了 OpenSSL,但似乎 Swift API 和 OpenSSL API 是混合的,生活在同一个OpenSSL模块中。

是否可以为 C OpenSSL API 创建OpenSSL模块,为 Swift API 创建OpenSSLTest2模块? 另外,如果可能的话OpenSSL我希望模块是私有的。

这是我的豆荚规格。

Pod::Spec.new do |s|
s.name             = 'OpenSSLTest2'
s.version          = '0.1.0'
s.summary          = 'A short description of OpenSSLTest2.'
s.description      = <<-DESC
TODO: Add long description of the pod here.
DESC
s.homepage         = 'https://github.com/yshrsmz/OpenSSLTest2'
s.license          = { :type => 'MIT', :file => 'LICENSE' }
s.author           = { 'yshrsmz' => 'mymailaddress' }
s.source           = { :git => 'https://github.com/yshrsmz/OpenSSLTest2.git', :tag => s.version.to_s }
s.swift_version = '4.2'
s.platform = :ios
s.ios.deployment_target = '8.0'
# if I change here to 'OpenSSLTest' or something, it won't compile 
s.module_name = 'OpenSSL'
s.source_files = 'OpenSSLTest2/Classes/**/*.swift', 'OpenSSLTest2/OpenSSL/include/**/*.h'
s.header_dir = 'openssl'
s.public_header_files = 'OpenSSLTest2/OpenSSL/include/openssl/*.h'
s.preserve_paths = 'OpenSSLTest2/Classes/OpenSSL/module.modulemap'
s.libraries = 'crypto', 'ssl'
s.vendored_libraries = 'OpenSSLTest2/OpenSSL/lib/libcrypto.a', 'OpenSSLTest2/OpenSSL/lib/libssl.a'
s.pod_target_xcconfig = {
'SWIFT_INCLUDE_PATHS' => '$(PODS_ROOT)/OpenSSLTest2/OpenSSL/module $(PODS_TARGET_SRCROOT)/OpenSSL/module',
'LIBRARY_SEARCH_PATHS' => '$(PODS_ROOT)/OpenSSLTest2/OpenSSL/lib'
}
end

这是 OpenSSL 的模块映射。

module OpenSSL [system] {
header "openssl/conf.h"
header "openssl/evp.h"
header "openssl/err.h"
header "openssl/bio.h"
header "openssl/ssl.h"
header "openssl/md4.h"
header "openssl/md5.h"
header "openssl/sha.h"
header "openssl/hmac.h"
header "openssl/rand.h"
header "openssl/ripemd.h"
header "openssl/pkcs12.h"
header "openssl/x509v3.h"
export *
}

这也是完整的存储库。

https://github.com/yshrsmz/OpenSSLTest2/tree/0.1.0-pre

谢谢。

我最终创建了一个仅包含OpenSSL(带有模块映射(的框架,然后将该框架用作vendored_frameworks

相关内容

最新更新