MuPDF を podspec に適合させようとしています。なかなか思うように進まないのですが…。
error: could not build module 'UIKit'
これは、しようとするたびに発生するエラーですpod lib lint
。ただし、ポッドスペックの正確な内容に応じて、2 つのフレーバーがあります。しかしその前に、いくつかのコンテキストがあります!
tl;dr : 私の脳は、MuPDF とその静的ライブラリの依存関係を処理して、そこから適切な podspec を作成することができません。手伝ってくれますか?
ファイルのレイアウト
したがって、ライブラリは MuPDF ( http://mupdf.com ) です。彼らの git リポジトリのクローンを作成しました。多数のファイルが付属してい.m
ますが、メイン ライブラリは C で記述されており、いくつかの依存関係があります。そのため、いくつかの静的ライブラリ (.a
ファイル) ができあがります。ファイルのレイアウトは次のようになります。
mupdf/
# objc files
platform/ios/common.{h,m}
platform/ios/Classes/*.{h,m}
# headers and static libraries
include/**/*.h
platform/ios/thirdparty/*.a
このinclude
フォルダには、 のライブラリに必要なヘッダーが含まれていますplatform/ios/thirdparty
。これらのヘッダーは に含まれていplatform/ios/common.h
ます。
ポッドスペック
そして、私のポッドスペックは次のようになります。
Pod::Spec.new do |s|
# <enter usual podspec yada yada here>
s.source_files = "platform/ios/Classes/**/*.{h,m}", "platform/ios/common.{h,m}", "include/**/*.h"
s.public_header_files = "platform/ios/Classes/**/*.h"
s.header_mappings_dir = "include"
s.libraries = "z"
s.vendored_libraries = "platform/ios/thirdparty/*"
end
それ (および podspec のバリエーション) に基づいて、2 つの異なるエラーが発生します。
シンボル再定義エラー
この正確な podspec 構成では、次のエラーが発生します。
- ERROR | /<path>/mupdf/include/mupdf/fitz/math.h:97:8:
error: redefinition of 'fz_point_s'
- NOTE | /<path>/mupdf/include/mupdf/fitz/math.h:97:8:
note: previous definition is here
- ERROR | /<path>/mupdf/include/mupdf/fitz/math.h:121:8:
error: redefinition of 'fz_rect_s'
- NOTE | /<path>/mupdf/include/mupdf/fitz/math.h:121:8:
note: previous definition is here
# etc. etc.
- NOTE | Target Support Files/Pods-mupdf/Pods-mupdf-prefix.pch:2:9:
fatal error: could not build module 'UIKit'
循環依存エラー
行をコメントアウトするs.public_header_files
と、循環依存エラーが発生します。とても奇妙!
- NOTE | /privateTarget Support Files/Pods-mupdf/Pods-mupdf-umbrella.h:1:9:
fatal error: cyclic dependency in module 'UIKit':
UIKit -> Foundation -> CoreFoundation -> MuPDF -> UIKit
結論
頭が痛いです、助けてください!