2009-04-16 22 views
4

私は/opt/local/libからLIBRARY_SEARCH_PATHSを設定し、問題のライブラリが(私はGLEWにリンクしています)があることが確認されました:私はXcodeでLIBRARY_SEARCH_PATHSが認識されないのはなぜですか?

$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を認識します(this questionのように)。なぜここで動かないの?

答えて

2

おそらく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はライブラリパスの詳細を処理します。

1

Xcodeは潜在的に複数のSDKで動作しますので、HEADER_SEARCH_PATHSやLIBRARY_SEARCH_PATHSなどのように、これらの種類を定義するときはいつでも、現在のSDKルートはリンカーに渡される実際のパスの前に追加されます。

この作業を行う1つの方法は、SDKにディレクトリを追加することです。たとえば、あなたは、Mac OS X 10.5 SDKで構築している、あなたはあなたのオプトインディレクトリを追加したと仮定すると:

ln -s /opt /Developer/SDKs/MacOSX10.5.sdk/opt 

あなたのライブラリーは、今お使いのシステムにあります。

これをしたくない場合は、CMakeを見て、実際のライブラリのライブラリ要件を生成する方法を調べる必要があります(私はCMakeについて何も知らないので、私はお手伝いできません)。これはまた、USER_HEADER_SEARCH_PATHSとHEADER_SEARCH_PATHSの相違点があなたの他の質問である理由を示しています。 OTHER_LDFLAGSが変数を構築して別のオプションとして

、あなたもこのパスを指定することができます。

OTHER_LDFLAGS=-L/opt/local/lib 

これは、リンカはは/ opt/local/libのと同様に、標準のパスを検索させないだろうだろう別のプロジェクトファイルを生成する必要があります。

関連する問題