バイナリ (実行可能ファイルおよびその他のライブラリ) と同じディレクトリから共有ライブラリをロードするために、CMake スクリプトで実行したことは次のとおりです。
SET(CMAKE_BUILD_WITH_INSTALL_RPATH true)
SET(CMAKE_INSTALL_RPATH "$ORIGIN/")
(CMake 3.0+でテスト済み)
仕組み (私の理解): 2 行目は、バイナリ検索フォルダーに $ORIGIN 特殊文字列を追加するように CMake に指示します (この特殊な $ORIGIN 文字列は、実行時に OS によって、実行中のバイナリを含むフォルダーに「置き換えられます」 . したがって、この文字列を含むバイナリの隣にある必要なライブラリが正しく検出されます)。
ただし、CMake でこの変数を設定すると、インストール時のバイナリ (たとえば、make installでデプロイされたもの) にのみ影響します。CMake は、ビルド段階で作成されたバイナリの検索パスを変更しませんが、インストール時にのみ変更します。
私は CMake のインストール機能を使用しておらず、自由に再配置可能なフォルダーにアプリケーションを提供したいだけなので、最初の呼び出しを使用して、ビルド時にインストール時の検索パスを使用するように CMake に指示します。
したがって、これら 2 つの呼び出しで、CMake で生成された makefile でmake (または XCode でビルド) を呼び出すと、検索フォルダーが $ORIGIN に正しく設定されたバイナリが作成されます。
他のターゲットを定義する前にこれを行ってください。また、set_target_property を BUILD_WITH_INSTALL_RPATH および INSTALL_RPATH プロパティとともに使用して、個々のターゲットのこれらの設定をカスタマイズすることもできます。
これは Linux でしかテストしていませんが、MacOS X が同じように動作する場合は問題ありません。
お役に立てれば
ベンジャミン