Pregunta

He puesto LIBRARY_SEARCH_PATHS a /opt/local/lib, y verificó que la biblioteca en cuestión es allí (estoy ligarse a 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, pero me da el error de vinculador

library not found for -lGLEW

Estoy generar el proyecto de Xcode con CMake, por lo que no desee modificar explícitamente el proyecto de Xcode (si alguien sugiere que se añada como un marco, o algo por el estilo). Xcode reconoce bien USER_HEADER_SEARCH_PATHS (como en esta pregunta ) ; ¿por qué no funciona aquí?

¿Fue útil?

Solución

Tal vez añadiendo algo como esto a su 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} ...)

Cuando miprograma es el nombre del ejecutable objetivo que tiene que enlazar con la biblioteca. Se podría sustituir a la ... con las otras bibliotecas que está utilizando en ese ejecutable.

De esta manera CMake manejaría los detalles de la ruta de la biblioteca para usted.

Otros consejos

Xcode trabaja en potencialmente múltiples del SDK, por lo que cada vez que el definir este tipo de cosas (como HEADER_SEARCH_PATHS o LIBRARY_SEARCH_PATHS) la raíz SDK actual se le añade a la ruta real que está consiguiendo pasar al enlazador.

Por lo tanto, una manera de hacer este trabajo sería añadir su directorio para el SDK. Por ejemplo, suponiendo que se está construyendo con el Mac OS X 10.5 SDK, se puede inscribir su directorio opt:

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

Su biblioteca ahora se encuentra en su sistema.

Si no quieres hacer esto, entonces usted tendrá que mirar a CMake y averiguar cómo conseguir que se genere un requisito de la biblioteca para su biblioteca real (no sé nada acerca de CMake, por lo que puedo 't que ayuda allí). Esta es la razón por la que se ve una diferencia entre USER_HEADER_SEARCH_PATHS y HEADER_SEARCH_PATHS re su otra pregunta.

Como otra opción, puede también especificar esta ruta con los OTHER_LDFLAGS construyen variables:

OTHER_LDFLAGS=-L/opt/local/lib

Esto haría que el enlazador para buscar / opt / local / lib, así como sus caminos estándar y no requeriría que para generar un archivo de proyecto diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top