문제

나는 설정했다 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_Path과 같은) 현재 SDK 루트가 링커로 전달되는 실제 경로로 전제됩니다.

따라서이 작업을 수행하는 한 가지 방법은 디렉토리를 SDK에 추가하는 것입니다. 예를 들어, Mac OS X 10.5 SDK를 사용하여 구축한다고 가정하면 옵트 디어를 추가 할 수 있습니다.

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

귀하의 도서관은 이제 시스템에서 발견됩니다.

이 작업을 원하지 않으면 CMAKE를보고 실제 라이브러리에 대한 라이브러리 요구 사항을 생성하는 방법을 찾아야합니다 (CMAKE에 대해 아무것도 모르겠으므로 도움이되지 않습니다. 당신은 거기). 이것이 또한 사용자 _header_search_paths와 header_search_paths 사이의 차이가 다른 질문입니다.

다른 옵션으로, 다른 _ldflags 빌드 변수 로이 경로를 지정할 수도 있습니다.

OTHER_LDFLAGS=-L/opt/local/lib

이로 인해 링커는 표준 경로뿐만 아니라 검색/opt/local/lib가 발생하며 다른 프로젝트 파일을 생성 할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top