私のCMakeライブラリMyLibrary
は、非標準のFindOtherLibrary.cmake
でインポートするOtherLibrary
の依存関係を持っています。CMakeライブラリをインストールする:依存関係のモジュールを見つける
マイライブラリには、公にOtherLibrary
によって異なります
target_link_libraries(MyLibrary PUBLIC OtherLibrary::OtherLibrary)
私は(MyLibraryConfig.cmake
と一緒に)MyLibrary
をインストールし、ユーザーがそれとリンクしたい場合には、彼らはそのためOtherLibrary
をインポートする必要があります。
MyLibrary
沿っFindOtherLibrary.cmake
を配布する方法に関する良い習慣はありますか?それは
include(CMakeFindDependencyMacro)
find_dependency(OtherLibrary)
のようなものが含まれており、FindOtherLibrary.cmake
がどこにあるか知っている場合
理想的には、一つは、インストール設定ファイルMyLibraryConfig.cmake
から自動的にOtherLibrary
をインポートすることにより、MyLibrary
のユーザーのために物事をより簡単にすることができます。
これはすべて可能ですか?
問題を理解できません。 'MyLibraryConfig.cmake 'と一緒に' MyLibrary 'をインストールすると、あなたの設定ファイル**にはあなたのライブラリや他のライブラリへのパスと適切な関係が含まれています。したがって、ユーザーが 'MyLibrary'ターゲットとリンクすると、' OtherLibrary'と自動的にリンクします。 'FindOtherLibrary.cmake'スクリプトは必要ありません。 – Tsyvarev
@Tsyvarev 'OtherLibrary'のパスがハードコーディングされている限り、正しいと思います。しかし、 'FindOtherLibrary.cmake'がインポートされたターゲットを定義していれば、' MyLibrary'のユーザは 'OtherLibrary'を自分で見つけることができなければなりません。 – oLen
ハードコードされたパスを必要としない場合は、 'MyLibraryConfig.cmake'の代わりに' FindMyLibrary.cmake'スクリプトを提供する必要があります。あなたのライブラリユーザの作業には、そのスクリプトで彼(彼女)のプロジェクトを出荷する必要があります。また、あなたがdocsで記述した他のすべてのスクリプトと一緒に* CMAKE_MODULE_PATH *を調整します。だから、 'FindMyLibrary.cmake'と一緒に' FindOtherLibrary.cmake'を提供することができます。 – Tsyvarev