1

プロジェクトのドキュメントには、フレームワークとリンカー フラグを追加するだけでよいと書かれています。何時間も無駄な時間を過ごした後、私はそれが真実ではないことを理解しました. これを行うと、プロジェクトはヘッダー ファイルを認識しません。コンパイラがヘッダーを見つけられるように、フレームワークをどこかに配置する必要があります。私の場合、フレームワークを /Developer/Library/Frameworks にドロップし、そのフレームワーク ディレクトリを検索する際に再帰するように指示したときに機能しました (ヘッダー検索ディレクトリをいじらないでください)。

次に、リンクが次のメッセージで失敗するという問題が発生します。

ld: framework not found OCHamcrestIOS

プロジェクトのドキュメントに、Xcode 4 用に更新されたことが記載されていることに気付きました。コードをチェックアウトした後、フレームワークのバイナリをプルダウンし、IOS バージョンのフレームワークをビルドできずに多くの時間を無駄にしました。

ドキュメントはこちらです。

また、そのドキュメントで、cocoa の指示では、ファイルのコピー フェーズをビルドに入れるように指示されていることに気付きました。私はそれを試しました。結果は変わりませんでした。

前回、陥没穴に陥ったのは、ライブラリが C++ コードだったからです。多分それはまだ問題です。

ここで迅速な解決策がない限り、STAssert の使用に戻ることにします。


更新: Xcode を再インストールしました。それでもうまくいきません。プロジェクトにヘッダーファイルを追加するなど、これを機能させる安価な方法があります。これについてのブログ投稿を行い、同じ経験を持つ人を引き出しました。

4

2 に答える 2

1

私は自分のプロジェクトで多くのフレームワークを使用しています。他の人からのものもあれば、私のものもあります。ドキュメントを見ると、コピー フェーズは iOS 開発用ではないことをお勧めします。だから私はそれをしません。https://github.com/jonreid/OCHamcrestから最新の zip をダウンロードしましたが、すぐに使える iOS 静的ライブラリが含まれているようです。(私のMacではありませんので、テストして確認することはできません)。

とにかく、静的ライブラリを含める方法は

  • プロジェクト (XCode 4) を選択します。
  • ライブラリを追加するターゲットを選択します。
  • [ビルド フェーズ] タブを選択します。
  • ライブラリとバイナリをリンクを展開します。
  • [+] ボタンをクリックしてフレームワークを追加します。
  • [Add Other ...] ボタンをクリックし、<lib>.frameworkディレクトリを含むディレクトリに移動して選択します。

それで全部です。ターゲット検索パスが更新され、フレームワーク ディレクトリが含まれるようになり、フレームワークがプロジェクトの左側に一覧表示されます。展開するとヘッダーが表示されます。

あなたが言及した問題は、いくつかのように聞こえます。まず、framework not found は、フレームワークがターゲットに含まれていないように聞こえます。左側のプロジェクト リストでフレームワークを選択すると、右側にそのターゲット メンバーシップが表示されます。コンパイルしているターゲットに対してオンになっていることを確認してください。

第二に、フレームワークの構築は簡単な作業ではないため、それを行うスクリプトがない限り、試みないでください。これは、iOS の静的フレームワークを構築するということは、シミュレーターとデバイスの両方でコンパイルし、コンパイルされた lib ファイルをユニバーサル ファイルに結合し、それとヘッダーを特定のディレクトリ構造に格納することを意味するためです。

ただし、OCHamcrest からダウンロードした zip には、正しい OCHamcrestiOS.framework が含まれているようです。したがって、そのディレクトリをどこかに保存し、上記で概説した手順を使用してリンクすると、問題なく動作するはずです。

于 2011-06-20T00:27:55.737 に答える
0

そのため、私が今のところ採用した解決策は、多くの時間を費やした後、フレームワークをプロジェクトに含めることでした。

  1. Xcode プロジェクト内に Third Party というグループを作成します。
  2. thirdparty というフォルダーにリンクします。
  3. [Xcode でファイルを追加] に移動し、フレームワークを選択します。
  4. それを依存関係にドラッグします。
  5. テストを実行すると、合格します!

/System/Library/Frameworks で参照するとバージョン管理の問題が発生し、非常に迅速にセットアップできるため、とにかくこれが望ましいでしょう。さらに、継続的インテグレーション サーバーがあり、何かが変更されるたびにそこにアクセスしてバージョンを同期する必要があるのは、それほど大きなことではありません。

チェックしてくれてありがとう、デレク。

于 2011-06-20T20:13:51.423 に答える