2009-04-16 20 views
4

Ich habe LIBRARY_SEARCH_PATHS-/opt/local/lib und verifiziert eingestellt, dass die Bibliothek in Frage gibt es (ich Anbindung an GLEW):Warum erkennt Xcode meine LIBRARY_SEARCH_PATHS nicht?

$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 

aber Xcode gibt mir den Linkerfehler

library not found for -lGLEW 

I Ich erzeuge das Xcode-Projekt mit CMake, daher möchte ich das Xcode-Projekt nicht explizit modifizieren (wenn jemand vorschlägt, es als Framework oder etwas ähnliches hinzuzufügen). Xcode erkennt USER_HEADER_SEARCH_PATHS in Ordnung (wie in this question); Warum funktioniert es hier nicht?

Antwort

2

Vielleicht fügen Sie so etwas zu Ihrer CMakeLists.txt?

Dabei ist Myprogram der Name der ausführbaren Zieldatei, die mit der Bibliothek verknüpft werden muss. Sie würden ... mit den anderen Bibliotheken ersetzen, die Sie für diese ausführbare Datei verwenden.

Auf diese Weise würde CMake die Bibliothekspfaddetails für Sie behandeln.

1

Xcode arbeitet mit potenziell mehreren SDKs. Wenn Sie diese Art von Dingen definieren (wie HEADER_SEARCH_PATHS oder LIBRARY_SEARCH_PATHS), wird der aktuelle SDK-Stamm dem tatsächlichen Pfad vorangestellt, der an den Linker übergeben wird.

Eine Möglichkeit, dies zu erreichen, wäre, Ihr Verzeichnis dem SDK hinzuzufügen. Zum Beispiel, vorausgesetzt, Sie sind mit dem Mac OS X 10.5 sdk Gebäude sind, könnten Sie Ihre opt dir hinzufügen:

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

Ihre Bibliothek würde jetzt auf Ihrem System gefunden werden.

Wenn Sie dies nicht tun wollen, dann müssen Sie sich CMake ansehen und herausfinden, wie Sie es bekommen, um eine Bibliotheksanforderung für Ihre eigentliche Bibliothek zu generieren (ich weiß nichts über CMake, also ich kann dir da nicht helfen). Aus diesem Grund sehen Sie auch einen Unterschied zwischen USER_HEADER_SEARCH_PATHS und HEADER_SEARCH_PATHS für Ihre andere Frage.

Als weitere Option können Sie auch diesen Pfad angeben mit den OTHER_LDFLAGS bauen Variable:

OTHER_LDFLAGS=-L/opt/local/lib 

Dies ist der Linker nicht zur Suche/opt/local/lib sowie seine Standardpfade und würde dazu führen würde erfordern, dass Sie eine andere Projektdatei generieren.

Verwandte Themen