【问题标题】:Cmake on mac os x, link libraries with fullpathMac os x上的Cmake,使用完整路径链接库
【发布时间】:2011-11-06 04:44:21
【问题描述】:

我正在尝试使用 cmake 构建一个 python 扩展。这是 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.so 与 vigranumpycore.so 和 libboost_python.dylib 的完整路径链接起来? 谢谢!

【问题讨论】:

    标签: macos linker cmake rpath python-extensions


    【解决方案1】:

    您正面临 rpath 规则的问题。我认为您可以通过添加该行来修复它

    set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
    

    PROJECT 命令之前。

    【讨论】:

    • 不幸的是,尽管这看起来像是阅读 CMAKE 文档的正确解决方案,但它没有任何效果。我真的不明白为什么......
    • 这是否取决于 vigranumpycore.so 和 libbost_python.dylib 安装在非系统位置的事实??
    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多