Add static library to podspec

后端 未结 2 2004
臣服心动
臣服心动 2020-12-23 12:15

My podspec requires a static library (OpenSSL). For convenience, I\'m shipping the library with the pod.

The static library contains:

  • Binaries:
相关标签:
2条回答
  • 2020-12-23 12:49

    I managed to add the static library as a subspec. I prefer this approach because it uses the build shipped with my pod by default, and also enables users to provide their own build if they so desire.

    As mentioned, the static library is OpenSSL but the following applies to any static library. I'm using the following directory structure:

    libraries/openssl-1.0.1e/include/openssl/*.h
    libraries/openssl-1.0.1e/LICENSE
    libraries/openssl-1.0.1e/lib/*.a
    

    The resulting subspec would be:

    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
    

    Line by line:

    openssl.preserve_paths = 'libraries/openssl-1.0.1e/include/openssl/*.h', 'libraries/openssl-1.0.1e/include/LICENSE'
    

    Preserve headers and the license file. We will use the headers below.

    openssl.vendored_libraries = 'libraries/openssl-1.0.1e/lib/libcrypto.a', 'libraries/openssl-1.0.1e/lib/libssl.a'
    

    Tell CocoaPods that we are shipping the above static libraries in the pod. This will preserve the files, as well as modifying LIBRARY_SEARCH_PATHS accordingly.

    openssl.libraries = 'ssl', 'crypto'
    

    Includes the libraries in "Other Linker Flags".

    openssl.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/libraries/openssl-1.0.1e/include/**" }
    

    Tells the project where to find the headers. We cannot use public_header_files because this is a subspec.

    0 讨论(0)
  • 2020-12-23 12:52

    You can try do it like it's done here https://github.com/krzak/OpenSSL, or just use this Pod with you project if you find it convienence

    pod 'OpenSSL', :podspec => 'https://raw.github.com/krzak/OpenSSL/master/OpenSSL.podspec'
    
    0 讨论(0)
提交回复
热议问题