Question

J'ai mis LIBRARY_SEARCH_PATHS à /opt/local/lib, et vérifié que la bibliothèque en question est là (je relie à 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

mais Xcode me donne l'erreur d'éditeur de liens

library not found for -lGLEW

Je suis générer le projet Xcode avec CMake, donc je ne veux pas modifier explicitement le projet Xcode (si quelqu'un suggère d'ajouter comme un cadre, ou quelque chose comme ça). Xcode reconnaît bien USER_HEADER_SEARCH_PATHS (comme dans cette question ) ; pourquoi ça ne marche pas ici?

Était-ce utile?

La solution

Peut-être ajouter quelque chose comme ceci à votre 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} ...)

Où myprogram est le nom de l'exécutable cible qui doit faire le lien avec la bibliothèque. Vous remplacez le ... avec les autres bibliothèques que vous utilisez sur l'exécutable.

De cette façon CMake gérerait les détails de chemin de bibliothèque pour vous.

Autres conseils

Xcode fonctionne sur potentiellement plusieurs années SDK, donc chaque fois que votre définir ce genre de choses (comme HEADER_SEARCH_PATHS ou LIBRARY_SEARCH_PATHS) la racine actuelle du SDK est préfixé le chemin réel qui devient passé à l'éditeur de liens.

Alors, une façon de faire ce travail serait d'ajouter votre répertoire au SDK. Par exemple, en supposant que vous construisez avec Mac OS X 10.5 sdk, vous pouvez ajouter votre opt dir:

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

Votre bibliothèque serait maintenant disponible sur votre système.

Si vous ne voulez pas faire cela, alors vous devrez regarder CMake et savoir comment obtenir de générer une exigence bibliothèque pour votre bibliothèque réelle (je ne sais pas quoi que ce soit au sujet de CMake, donc je peux « t vous aider là-bas). Ceci est également la raison pour laquelle vous voyez une différence entre USER_HEADER_SEARCH_PATHS et HEADER_SEARCH_PATHS re votre autre question.

Une autre option, vous pouvez également spécifier ce chemin avec les OTHER_LDFLAGS construire la variable:

OTHER_LDFLAGS=-L/opt/local/lib

Ceci provoquerait l'éditeur de liens pour rechercher / opt / local / lib ainsi que ses chemins standard et ne vous avez besoin pour générer un fichier de projet différent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top