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