Mac OS X上的Cmake,全路径的链接库

问题描述:

我试图用cmake构建一个python扩展。这是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? 谢谢!

您正面临着rpath规则的问题。我认为你可以通过加入该行

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

之前的PROJECT命令。

+0

不幸的是,尽管这看起来像是阅读CMAKE文档的正确解决方案,但它没有任何效果。我真的不明白为什么...... –

+0

难道这取决于vigranumpycore.so和libbost_python.dylib安装在非系统位置的事实? –