5

デバイス用にコンパイルするときは plcrashreporter プロジェクト ページで提供されているビルド済みフレームワークを使用できますが、シミュレーター用には使用できません。ここで説明したのと同じ問題があります。


ビルド済みのフレームワークはシミュレーターのアーキテクチャーをサポートしていないと思いますので、plcrashreporter のソースをダウンロードしました。Xcode プロジェクトを開き、CrashReporter-iOS-Simulator > iPhone 4.3 Simulatorターゲットを選択しました。プロジェクトをビルドしようとすると、次のエラーが発生します。

libtool: オプション文字 `D' が不明です: -D__IPHONE_OS_VERSION_MIN_REQUIRED=30000

他のほとんどのターゲット (デバイスなど) をビルドしようとすると、同じエラーが発生します。


次のステップは、ソース ファイルをプロジェクトに追加することでした。前述の問題はもうありません。ただし、コンパイルしようとすると次のエラーが発生します。

致命的なエラー: 'crash_report.pb-ch' ファイルが見つかりません [2]
 #import "crash_report.pb-ch"
         ^
1 エラーが発生しました。
コマンド clang が終了コード 1 で失敗しました

エラー メッセージに記載されているcrash_report.pb-c.hファイルが存在しません。plcrashreporter のソース ツリーとインターネットを検索しました。したがって、このファイルは何らかの方法で生成されると想定する必要がありますが、その方法がわかりません。

(インクルードされている PLCrashReport.m の行をコメント アウトすると、crash_report.pb-c.h他の多くのコンパイル エラーが発生します。)

4

1 に答える 1

5

ファイルが正常に存在しない、または存在しないという点で正しいですcrash_report.pb-c.c。これは、このエラーの後の次のエラーになります。

およびファイルはcrash_report.pb.hcrash_report.pb.cビルド ルールによってコンパイル時に生成されます。それらを作成するには、カスタム スクリプトをビルド プロセスに追加する必要があります。

まず、プロジェクトの plcrashreporter フォルダー ( ) に protoc-c があることを確認しますplcrashreporter-1.0/Dependencies/protobuf-2.0.3/bin/protoc-c。彼らはそれを深く埋めました。これは、スクリプトが実行されるものです。

次に、crash_report.protoファイルを見つけます。protoc-cこれは、不足しているファイルを作成するために使用される主な入力です。このディレクトリを取得してスクリプトに手動で配置するか、すべての*.protoファイルでスクリプトを実行するルールを作成できます。私は後者を行います。

次に、ビルド ルールを編集protoc-cして、フラグ--c_out="${DERIVED_FILES_DIR}"crash_report.protoファイルを 2 つの入力として実行するスクリプトを含めます。これにより、crash_report.proto ファイルと同じディレクトリに出力され、プロジェクトで既にアクセスできるはずです crash_report.pb-c.hcrash_report.pb-c.c

Xcode 4 (およびそれ以降) のビルド ルールは、プロジェクトのターゲットのビルド ルール タブにあります。ビルド ルールは、他のすべてのビルド ルールの前に追加します。Xcodeでの私の外観は次のとおりです。

Xcodeで私のものは次のようになります。

おそらく、ディレクトリをいじる必要があります

于 2011-08-19T16:37:27.767 に答える