Ответ 1
Мне удалось добавить статическую библиотеку как subspec
. Я предпочитаю этот подход, потому что он по умолчанию использует сборку, поставляемую с моим модулем, а также позволяет пользователям предоставлять свою собственную сборку, если они этого желают.
Как уже упоминалось, статическая библиотека - 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, что мы отправляем вышеуказанные статические библиотеки в контейнере. Это сохранит файлы, а также изменит 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
, потому что это subspec
.