3

我正在尝试在我的项目中包含一个动态库,并且我正在使用以下 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 解决此问题?

4

0 回答 0