2011-08-29 5 views
4

저는 cmake로 파이썬 확장을 빌드하려고합니다. 이것은 cmake의 목록입니다Mac OS X에서 Cmake, 풀 패스로 링크 라이브러리

cmake_minimum_required(VERSION 2.8) 
PROJECT(drtile) 
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) 
find_package(Vigra REQUIRED) 
find_package(Boost COMPONENTS python REQUIRED) 
find_package(PythonLibs REQUIRED) 
find_package(Numpy REQUIRED) 

include_directories(
    ${VIGRA_INCLUDE_DIR} 
    ${PYTHON_NUMPY_INCLUDE_DIR} 
    ${Boost_INCLUDE_DIR} 
    ${PYTHON_INCLUDE_DIRS} 
    ${PYTHON_INCLUDE_PATH} 
) 
add_library(drtile SHARED drtile.cpp) 
message("xxx ${Boost_PYTHON_LIBRARY} ${VIGRA_NUMPY_CORE_LIBRARY}${VIGRA_NUMPY_IMPEX_LIBRARY}") 
target_link_libraries(drtile ${Boost_PYTHON_LIBRARY} ${VIGRA_NUMPY_CORE_LIBRARY} ${PYTHON_LIBRARY}) 
IF(WIN32) 
    SET_TARGET_PROPERTIES(drtile PROPERTIES OUTPUT_NAME "drtile" PREFIX "" SUFFIX ".pyd") 

ELSE() 
    SET_TARGET_PROPERTIES(drtile PROPERTIES OUTPUT_NAME "drtile" PREFIX "" SUFFIX ".so") 
ENDIF() 

라이브러리는 컴파일하고 올바르게 연결하지만 otool으로 좋아 도서관에서 볼 때 내가 얻을 수있다 :

otool -L drtile.so 

drtile.so: 
/Users/lfiaschi/phd/workspace/lazyflow/lazyflow/drtile/drtile.so (compatibility version 0.0.0, current version 0.0.0) 
libboost_python.dylib (compatibility version 0.0.0, current version 0.0.0) 
vigranumpycore.so (compatibility version 0.0.0, current version 0.0.0) 
/Users/lfiaschi/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0) 
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11) 

어떻게 CMake가 drtile를 연결할 수 있습니다. 그래서 vigranumpycore.so와 libboost_python.dylib에 대한 풀 패스가 필요합니까? 감사합니다.

답변

0

rpath 규칙에 문제가 있습니다. 줄을 추가하여 문제를 해결할 수 있다고 생각합니다. PROJECT 명령 전에 줄을 추가하여 수정할 수 있다고 생각합니다. 명령 전에 줄을 추가하여 수정할 수 있다고 생각합니다.

+0

불행히도 CMAKE의 문서를 읽는 올바른 해결책 인 것처럼 보이지만 효과가 없습니다. 정말 이유를 모르겠다 ... –

+0

vigranumpycore.so 및 libbost_python.dylib가 비 시스템 위치에 설치되어 있다는 사실에 달려 있는가 ?? –