如何使用CMake正确设置动态lib路径?

时间:2017-04-08 03:47:59

标签: c++ makefile cmake shared-libraries

我试图在Mac上使用OpenMP

编译后,运行二进制文件时,

我得到了

dyld: Library not loaded: @rpath/libomp.dylib
  Referenced from: ./lab1
  Reason: image not found
[1]    64552 trace trap  ./lab1

我用otool找出它所期望的路径。

otool -L lab1
lab1:
        @rpath/libomp.dylib (compatibility version 5.0.0, current version 5.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)

此必需的库libomp.dylib位于路径/usr/local/opt/llvm/lib

如何让二进制文件找到它?

1 个答案:

答案 0 :(得分:1)

尝试使用CMake POST_BUILD操作添加所需的路径到可执行文件的路径:

add_custom_command(TARGET lab1 
    POST_BUILD COMMAND 
    ${CMAKE_INSTALL_NAME_TOOL} -add_rpath /usr/local/opt/llvm/lib
    $<TARGET_FILE:lab1>)

仅当lab1是使用add_executable创建的CMake可执行目标时才有效。