2009-04-16 13 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 

하지만, 엑스 코드는 나에게

library not found for -lGLEW 

I을 링커 오류가 있습니다 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 루트가 링커에 전달되는 실제 경로 앞에 추가됩니다.

그래서이 작업을 수행하는 한 가지 방법은 SDK에 디렉토리를 추가하는 것입니다. 예를 들어, 맥 OS X 10.5 SDK를 구축하고 가정, 당신은 수신 거부의 디렉토리를 추가 할 수 있습니다

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

라이브러리는 현재 시스템에

을 찾을 수있다.

이 작업을 원하지 않으면 CMake를보고 실제 라이브러리에 대한 라이브러리 요구 사항을 생성하는 방법을 알아야합니다 (CMake에 대해서는 아무것도 모릅니다. 너를 거기에서 도울 수 없다). 또한 USER_HEADER_SEARCH_PATHS와 HEADER_SEARCH_PATHS의 차이점을 다른 질문과 비교하는 이유이기도합니다. 이것은 링커가 표준 경로뿐만 아니라/옵션/지방/lib 디렉토리를 검색하지하고자하는 원인이

OTHER_LDFLAGS=-L/opt/local/lib 

: 또 다른 옵션으로

은 또한 변수를 구축 OTHER_LDFLAGS이 경로를 지정할 수 있습니다 다른 프로젝트 파일을 생성해야합니다.

관련 문제