CocoaPods несколько модулей в одном модуле, один для статической библиотеки, один для Swift - PullRequest
0 голосов
/ 13 сентября 2018

Я создаю Pod для iOS, который предоставляет крипто-API-интерфейсы с использованием OpenSSL.

До сих пор мне удавалось вызывать OpenSSL из Swift, но кажется, что Swift API и OpenSSL API смешаныживу в том же модуле OpenSSL.

Можно ли создать модуль OpenSSL для C OpenSSL API и модуль OpenSSLTest2 для Swift API?Кроме того, я бы хотел, чтобы 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

спасибо.

1 Ответ

0 голосов
/ 25 сентября 2018

Я закончил с созданием фреймворка, который содержит только OpenSSL (с modulemap), а затем использовал этот фреймворк как vendored_frameworks

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...