mac下报错
来源:13-4 使用CMake完成库的编译和链接

little_forest
2021-01-14
老师,在mac下会有错误
dyld: Library not loaded: @rpath/libfibonacci.dylib
不过在cmakelists.txt设置set(CMAKE_MACOSX_RPATH 0)就没有问题了。
写回答
2回答
-
你是直接下载了我的工程是吧?引入 conan 之后会把 rpath 的设置关掉,所以导致找不到。去掉 cmake 当中 conan 相关的配置,重新 load cmake 工程,就不用设置 set(CMAKE_MACOSX_RPATH 0) 了。
我在工程当中实际上加了这个配置 set(CMAKE_INSTALL_RPATH @loader_path/../lib),目的就是要让 install 之后的 可执行文件能够在它所在目录的父目录下 lib 目录中找到这个动态链接库。
加了 conan 之后,因为 conan 会配置 skip rpath 这个配置,因此导致上述配置失效,可以加一行:
set(CMAKE_SKIP_RPATH OFF)
来启用 rpath。rpath 实际上还是比较有用的,如果不启用的话,会使用绝对路径来查找动态链接库,不够灵活。
012021-01-14 -
bennyhuo
2021-01-14
可以参考 conan 的说明:
https://docs.conan.io/en/latest/howtos/manage_shared_libraries/rpaths.html
按照 conan 的说明,也可以在调用 conan 的 cmake 函数时传入参数来解决这个问题:
conan_basic_setup(KEEP_RPATHS)
00
相似问题