我正在尝试在我的项目中包含一个动态库,并且我正在使用以下 CMake 脚本设置编译:
find_package( DLIB 18.18.0 REQUIRED )
include_directories( ${DLIB_INCLUDE_DIRS} )
add_executable( executable executable.cxx )
target_link_libraries( executable ${dlib_LIBRARIES} )
如果我打印变量 ${dlib_LIBRARIES} 的目录,我会得到:
/Users/../INSTALL/lib/libdlib.dylib
这是正确的并且可以编译。执行可执行文件时出现问题并给出以下运行时错误:
dyld: Library not loaded: libdlib.18.18.0.dylib
Referenced from: /Users/.../bin/executable
Reason: image not found
Trace/BPT trap: 5
这似乎是合乎逻辑的,因为如果我运行 otool -L 可执行文件,我会得到一个相对路径而不是绝对路径:
$otool -L executable
libdlib.18.18.0.dylib (compatibility version 0.0.0, current version 18.18.0)
为什么 otool 显示的路径与使用 target_link_libraries 添加的路径不同,如何使用 cmake 解决此问题?