警告をクリーンアップすると、次のことがわかりました。
ld: warning: directory not found for option '-F/myPath/etc/myframework'
これは、非標準の iOS フレームワークで発生していました。警告を消す方法は?
警告をクリーンアップすると、次のことがわかりました。
ld: warning: directory not found for option '-F/myPath/etc/myframework'
これは、非標準の iOS フレームワークで発生していました。警告を消す方法は?
リンカーの 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" に設定することを忘れないでください。