0

単一の共有ライブラリと対応するヘッダー ファイルで構成されるサード パーティのクローズド ソース SDK を使用するプロジェクトに取り組んでいます。ライブラリを検索パスに追加しないようにしようとしているので、テスト用にライブラリのいくつかの異なるバージョンに対してプロジェクトをコンパイルすることができます。

私の質問は、共有ライブラリをどのように処理して、プロジェクトをうまくビルドして実行するかです。プロジェクトをビルドできますが、新しく作成された実行可能ファイルが必要な共有ライブラリを見つけることができません。共有ライブラリを実行可能ファイルと同じフォルダーにコピーすると実行されますが、他の開発者が簡単に作業できるように、その余分な手順を手動で行うことは避けたいと思います。プロジェクトがビルドされたときに検索パスに共有ライブラリがなくても実行できるように、共有ライブラリの依存関係を管理する良い方法は何でしょうか?

CMakeLists.txt共有ライブラリをどのように見つけているかを示すファイルの関連部分は次のとおりです。

add_library(theSDK SHARED IMPORTED)
set_target_properties( theSDK PROPERTIES IMPORTED_LOCATION 
    ${CMAKE_CURRENT_SOURCE_DIR}/lib/TheSDK/lib/libSDK.dylib )
add_executable(myProject ${myProject_SOURCES})
target_link_libraries (myProject theSDK)
4

1 に答える 1

1

Linux または Mac で実行していて、依存している共有ライブラリの場所がわかっている場合は、rpath を使用してライブラリ検索パスを実行可能ファイルに含めることができます。例を参照してください:

または、バイナリを実行する前に PATH (Windows)、LD_LIBRARY_PATH (Linux)、または DYLD_LIBRARY_PATH (Mac) を動的に調整するプログラムを実行するためのスクリプトを構成することもできます。これらの環境変数は、実行時に共有ライブラリを解決するために使用されます。

于 2013-05-07T15:28:36.910 に答える