2

ProtocolBuffers (libprotobuf) と Boost の ASIO ライブラリを使用して書いている簡単なプログラムがあります。システムの /usr/local/lib にある libprotobuf.a と libboost_system.a をリンクする必要があると判断しました。

いくつかの場所にある指示に従って、これらの.aファイルの両方を「ビルドフェーズ」の下の「ライブラリとバイナリをリンク」リストに追加しました。どちらも「必須」に設定されています。

ビルドすると、リンカー エラーが生成されます。

ld: library not found for -lprotobuf

「Build Settings」/「Other Linker Flags」に次を (2 つの別個の行として) 追加すると、問題は解決します: 「-L」、「/usr/local/lib」。

私の質問は、ライブラリ検索パスを設定するためのこの -L ハックが本当に正しい方法であるかどうかです。これらのライブラリを「ビルド フェーズ」/「ライブラリとバイナリをリンク」リストに追加したにもかかわらず、Xcode がこれらのライブラリの場所を取得しない理由がわかりません。このリストにそれらが存在することは、Xcode がそれらを見つける方法を理解するのに十分な情報であると考えていたでしょう。両方の .a ファイルがプロジェクトのファイル「ツリー」にも表示されるようになりました。

「その他のリンカーフラグ」設定の悪用と思われるものよりも、これを行うためのより良い方法はありますか?

Xcode 4.6.3 を使用しています。

4

1 に答える 1