コアに組み込まれていないフレームワーク、つまりサードパーティのフレームワークを使用する Mac OS X アプリケーションを構築する場合、フレームワークを見ると赤く表示されるという問題がよくあるようです。 XCode 4.5 で。
赤で表示される最も一般的な場所が 2 つあります。1 つはプロジェクト ナビゲーター ペイン (左側) で、もう 1 つはビルド フェーズ領域です。そして、3 番目の場所である [ファイルのコピー] 領域は、多くの場合、赤で表示されます。3つとも原因が異なります。
3 つの場所すべてが赤で表示されると、次のようになります。
観察者のための手がかり: 赤い部分の後にグレー表示されているテキストは、XCode が XCode.app バンドル内で問題のフレームワークを誤って探している可能性があることを示唆しています。また、フレームワークはフレームワーク アイコンなしで表示されていることに注意してください。上の画像では、無効なフレームワークのプレースホルダー アイコンのみが表示されています。
フレームワークがまったく見つからない場合、ビルド時にフレームワークのヘッダー ファイルをインポートできないため、「レキシカルまたはプリプロセッサの問題」が発生します。解決策は、通常、フレームワークの検索パスを修正することです。ただし、それが正しいと思われる場合でも、私はまだ赤いフレームワークを取得することがよくあります。
時々、アイコンは赤ですが、フレームワークの検索パスはコンパイルが正常に機能するのに十分機能します (動作し、レキシカルまたはプリプロセッサの問題は発生し#import <Thingy/Thingy.h>
ません)。フレームワークはコンパイル段階で正確に参照されますが、リンクまたはファイルのコピー段階では参照されないためです。
以下は、XCode がフレームワーク内のヘッダー ファイルをインポートできなかった場合のサンプルです。
この質問は一般的なものであり、将来、フレームワークのリストに「赤い」フレームワークが表示される場合に役立ちます。はい、ベンダーにフレームワークのサポートを依頼するためにベンダーに行きました。これがステップ 1 である必要があります。ただし、「XCodeはフレームワークを赤で示しています」は十分に混乱しているため、一般的に役立つ回答に値すると思います。したがって、この質問です。また、この場合、ベンダーのインストーラーは問題なく動作し、これは私のマシンのローカルの問題であり、他の人が将来発生する可能性があり、理解と修正を支援したいと考える理由があります。
髪を引き裂いた後、赤で表示されるフレームワークをコピーすることで、この問題を非常に悪い方法で解決できることがわかりました/Applications/Xcode.app/Contents/Developer/Library/Frameworks
が、それはおそらく正しい方法ではありません。それをするのは間違っているようです。/Developer/VendorName にあるフレームワークを xcode アプリ バンドルのライブラリ/フレームワークにコピーすると、コンパイラがフレームワークを見つけられないことを回避できます。
現在、サードパーティのフレームワークは/Developer
、フレームワークを作成した会社の名前が付けられたフォルダーの下に自動的にインストールされます。XCode は、すべてのフォルダーを自動的に検索し/Developer
、それらのフレームワークを何らかの方法で見つけることになっていますか?
現在、私はそれができないと推測しているので、XCodeはおそらく、このサードパーティのフレームワークを見つけるためのパスを毎回正確に伝える必要があります.
「Xcode がフレームワークを見つける方法」に関する Apple のドキュメントを見つけることができませんでした。まさにそれを尋ねる質問がここにありますが、答えはすべて、Xcodeがフレームワークを見つけてその検索パスを構築する方法ではなく、GCCヘッダー検索パスを扱っています。
XCode 4.5 はライブラリを見つけるためにどのフォルダを検索しますか? /Developer
XCode 4.5自体がなくなったにもかかわらず、フォルダはまだ検索されてい/Developer
ますか?
Mac OS X クライアントを使用するためにサードパーティのフレームワークをインストールする場合、どこにインストールする必要がありますか? また、インストーラーが機能したかどうかはどのように確認しますか? XCode に表示され、システムにインストールされている使用可能なすべてのフレームワークを一覧表示できるコマンド ライン呼び出しはありますか?
脚注: 作業の 2 番目のスタイルは、[その他を追加] ボタンを使用して、既知の場所にないフレームワークを見つけることです。それを使用すると、ビルドするプロジェクトで行き詰まることがよくありますが、実行時に失敗します。プラス ボタンを使用してコピー フェーズにフレームワークを追加すると、XCode では壊れているように見えるため、[ファイルのコピー] 機能は対象を見つけてコピーしないためです。ただし、回避策があります。Add Other を使用する必要がないように最初にどのように動作するかを尋ねていますが、Add Other がサードパーティのフレームワークを使用する唯一の方法である場合、ファイルのコピー機能が動作しないという問題が発生します。これに対する解決策は、XCode プロジェクト自体のフレームワーク検索パスがシステムに対して正しく設定されていないことであり、この特定のケースを修正するために必要なことはそれだけだと思います。一言で言えば、私は' グローバルな「フレームワーク検索パス」とは何ですか? どこに設定されているのでしょうか? または、XCode プロジェクトの検索パスのみがあり、グローバル フレームワークの検索パスはありませんか? フレームワークの検索パスをクリーンアップし、[その他を追加] を使用して新しいフレームワークを追加し、慎重に右クリックして、プロジェクト ナビゲーター ペインからすべての赤い項目を削除し、マウスのドラッグ アンド ドロップのみを使用し、 + ボタンをクリックしてフレームワークをコピー ファイルに追加すると、プライベート検索パスの場所にあるフレームワークを取得してビルドおよびコピーできます。[ファイルのコピー] 領域で [+] ボタンを使用し、そのダイアログを介してフレームワークを追加しようとすると、最初の図に示すように、フレームワークが間違った場所に追加されるという奇妙な XCode バグによって動作がブロックされているように見えます。その上、