CMakeとCPackを使用してライブラリを構成およびパッケージ化します。私は独自の検索モジュールを作成しました:_FindMyLib.cmake
_。
将来の開発者がライブラリを使用するためにFIND_PACKAGE(MyLib)
を指定できるように、CMake/CPackにこのファイルをCMakeモジュールディレクトリに追加するように指示するにはどうすればよいですか?
CMAKE_MODULE_PATH
を設定し、カスタムFindFoo.cmake
をプロジェクトとともに配布できます。例えば:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
CMakeモジュールディレクトリはCMake自体のインストールツリーの一部であるため、そこに何かを追加しようとしてはなりません。
CMakeモジュールディレクトリには、Kitwareによって作成または少なくともレビューされたモジュールが含まれており、そこに独自のモジュールを追加すると、プロジェクトのユーザーに、これもプロジェクトに当てはまるという印象を与えます。
FindMyLib.cmakeをfind_package
で検索された場所の1つにインストールする方が良いでしょう。
<prefix>/ (Windows) <prefix>/(cmake|CMake)/ (Windows) <prefix>/<name>*/ (Windows) <prefix>/<name>*/(cmake|CMake)/ (Windows) <prefix>/(lib/<Arch>|lib|share)/cmake/<name>*/ (Unix) <prefix>/(lib/<Arch>|lib|share)/<name>*/ (Unix) <prefix>/(lib/<Arch>|lib|share)/<name>*/(cmake|CMake)/ (Unix) <prefix>/<name>.framework/Resources/ (Apple) <prefix>/<name>.framework/Resources/CMake/ (Apple) <prefix>/<name>.framework/Versions/*/Resources/ (Apple) <prefix>/<name>.framework/Versions/*/Resources/CMake/ (Apple) <prefix>/<name>.app/Contents/Resources/ (Apple) <prefix>/<name>.app/Contents/Resources/CMake/ (Apple)
find_package
の検索方法の詳細については、 find_package
のドキュメント を参照してください。 CMakeパッケージングチュートリアル もこの場合に役立ちます。
許可する最良の方法
将来の開発者は、FIND_PACKAGE(MyLib)を指定してライブラリを使用できます
findモジュールではなく、パッケージ構成ファイル(-config.cmake)を記述することです。パッケージ構成ファイルは、FindPackageモジュールが検索するフォルダーの1つにインストールする必要があります(/ lib/package /または/ lib/cmake/packageなどが優先されます)。
FindPackageモジュールは、構成ファイルを見つけることができる場合、構成ファイルを自動的にロードします。
CMake wikiの詳細な手順は https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Packaging にあります。