web-dev-qa-db-ja.com

LD_LIBRARY_PATHはCMake内でどのように変更できますか?

$ LD_LIBRARY_PATHにないローカル共有ライブラリがあります。実行可能ファイルを実行したいのですが、システムフォルダで共有ライブラリが見つからないため、「共有ライブラリのロード中にエラー」が出力されます。

これの可能な修正方法は、ローカルライブラリフォルダーを含む新しいLD_LIBRARY_PATHをエクスポートすることです。

この環境変数をCMake内で自動的にエクスポートするにはどうすればよいですか?

20
Daniel Saad

共有ライブラリが実行可能ファイルの同じCMakeプロジェクトでビルドされていない場合、次のようにCMake rpath処理を使用できます。

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

make installを実行すると、CMakeは実行可能ファイルのランタイムパスを共有ライブラリに自動的に設定します。

共有ライブラリが同じCMakeプロジェクトで構築されている場合、これを使用します。

set(CMAKE_INSTALL_RPATH "/usr/local/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

この場合、共有ライブラリをインストールするディレクトリをランタイムパスに自分で追加する必要があります。

詳細については、 CMake rpath handling を参照してください。

5
explo91

-rpathリンカーオプションを使用して、ランタイム共有ライブラリの検索パスを設定できます。

SET(CMAKE_EXE_LINKER_FLAGS 
          "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib")
9
hank