3

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

結論

頭が痛いです、助けてください!

4

2 に答える 2

0

Build Phases -> Link Binary With Libraries で UIKit.framework を削除して追加することで問題を解決し、プロジェクトの最小 iOS バージョンを 6.0 に設定しました。

于 2015-06-04T07:15:37.040 に答える