2

警告をクリーンアップすると、次のことがわかりました。

ld: warning: directory not found for option '-F/myPath/etc/myframework'

これは、非標準の iOS フレームワークで発生していました。警告を消す方法は?

4

1 に答える 1

13

リンカーの man ページを確認すると、オプションldの次の詳細が表示されます。-Fdir

フレームワークを検索するディレクトリのリストに dir を追加します。-F で指定されたディレクトリは、コマンド ラインに表示される順序で、デフォルトの検索パスの前に検索されます。Xcode4 以降では、-F とディレクトリの間にスペースを入れることができます。

案の定、 を確認するとproject.pbxproj、不足しているフォルダーが表示されました。

FRAMEWORK_SEARCH_PATHS = (
                    "\"$(SDKROOT)/Developer/Library/Frameworks\"",
                    "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
                    "\"myPath/etc/myframework\"",
                );

したがって、フレームワークとの取引全体は、この面倒をすべて回避することだと思いました。それは、標準フレームワーク、つまり SDK フレームワークにも当てはまります。それ以外の場合は、さらに微調整が必​​要です。フレームワークプログラミングガイドから:

非標準ディレクトリでのフレームワークの検索

プロジェクトが、標準の場所のいずれにも含まれていないフレームワークにリンクしている場合、Xcode がそのヘッダー ファイルを見つける前に、そのフレームワークの場所を明示的に指定する必要があります。このようなフレームワークの場所を指定するには、フレームワークを含むディレクトリを Xcode プロジェクトの「フレームワーク検索パス」オプションに追加します。Xcode は、このディレクトリのリストをコンパイラとリンカーに渡します。コンパイラとリンカーはどちらも、このリストを使用してフレームワーク リソースを検索します。

注: フレームワークの標準的な場所は、ローカル システムの /System/Library/Frameworks ディレクトリと /Library/Frameworks ディレクトリです。

Xcode の Build Settings には、Framework Search Paths の特定のエントリがあることがわかりました。

この質問$(SRCROOT)への回答に従って、一般的なキャッチオール エントリを追加すると、問題が解決し、警告がなくなりました。ああ、ドロップダウンを "Recursive" に設定することを忘れないでください

于 2013-11-13T15:17:28.570 に答える