なぜLIBRARY_SEARCH_PATHSを認識Xcode向けないのですか?
-
09-09-2019 - |
質問
私は(私はLIBRARY_SEARCH_PATHS
にリンクしています)/opt/local/lib
するGLEW
を設定し、問題のライブラリーがあることを確認しました。
$ls /opt/local/lib
libGLEW.1.5.1.dylib libfreetype.a libz.a
libGLEW.1.5.dylib libfreetype.dylib libz.dylib
libGLEW.a libfreetype.la pkgconfig
libGLEW.dylib libz.1.2.3.dylib
libfreetype.6.dylib libz.1.dylib
が、Xcodeは私にリンカエラーが発生します。
library not found for -lGLEW
私はcmakeのとXcodeプロジェクトを生成していますので、(誰かが、フレームワーク、またはそのような何かとしてそれを追加することを示唆している場合)私は、明示的にXcodeのプロジェクトを変更する必要はありません。 Xcodeは(この質問のように)USER_HEADER_SEARCH_PATHS
罰金を認識し、 ;なぜそれがここで働いていないのですか?
解決
おそらく、あなたのCMakeLists.txtにこのような何かを追加する?
find_library(GLEW_LIB GLEW /opt/local/lib)
if(NOT ${GLEW_LIB})
message(FATAL_ERROR "Could not find GLEW")
endif()
target_link_libraries(myprogram ${GLEW_LIB} ...)
MYPROGRAMは、ライブラリにリンクする必要があり、ターゲットの実行ファイルの名前です。あなたがその実行に使用している他のライブラリで...置き換えます。
この方法CMakeのはあなたのためのライブラリパスの詳細を処理します。
他のヒント
Xcodeはそのたびに、現在のSDKのルートがリンカに渡されたばかりの実際のパスの前に付加される。(HEADER_SEARCH_PATHSまたはLIBRARY_SEARCH_PATHSのような)物事のこれらの種類を定義し、潜在的に複数のSDKののをに取り組んでいます。
だから、この作品を作るための一つの方法は、SDKにディレクトリを追加することです。たとえば、あなたは、Mac OS X 10.5 SDKで構築していると仮定すると、あなたのオプトインディレクトリを追加することができます:
ln -s /opt /Developer/SDKs/MacOSX10.5.sdk/opt
あなたのライブラリーは、今お使いのシステムに見られるます。
あなたがこれを行うにはしたくない場合は、は、その後、私はCMakeのについては何も知らない(CMakeのを見て、それはあなたの実際のライブラリ用のライブラリ要件を生成するために取得する方法を見つける必要がありますので、私はすることができます「t)が存在し、あなたを助けます。あなたはUSER_HEADER_SEARCH_PATHSとHEADER_SEARCH_PATHSとの違いは、あなたの他の質問を再度参照理由でもある。
OTHER_LDFLAGSは、変数を構築して別の選択肢として、あなたもこのパスを指定することもできます:
OTHER_LDFLAGS=-L/opt/local/lib
このリンカーはは/ opt / local / libのと同様に、標準のパスを検索する原因となると、別のプロジェクトファイルを生成する必要はありません。