66

CMake と CPack を使用してライブラリを構成およびパッケージ化します。私は独自の find-module: を作成しFindMyLib.cmakeました。

CMake/CPack にこのファイルを CMake モジュール ディレクトリに追加して、将来の開発者がFIND_PACKAGE(MyLib)私のライブラリを使用するように簡単に指定できるようにするにはどうすればよいですか?

4

3 に答える 3

69

プロジェクトでカスタムを設定CMAKE_MODULE_PATHして配布できFindFoo.cmakeます。例えば:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
于 2012-05-26T12:18:21.700 に答える
51

CMake モジュール ディレクトリは、CMake 自体のインストール ツリーの一部であるため、そこに何も追加しようとしないでください。

CMake モジュール ディレクトリには、Kitware によって作成された、または少なくともレビューされたモジュールが含まれています。そこに独自のモジュールを追加すると、プロジェクトのユーザーに、これがプロジェクトにも当てはまったという印象を与えます。

FindMyLib.cmake を で検索された場所の 1 つにインストールすることをお勧めしfind_packageます。

<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 のパッケージ化チュートリアルも役立ちます。

于 2012-05-26T12:58:52.477 に答える
14

許可する最善の方法

将来の開発者は FIND_PACKAGE(MyLib) を指定するだけでライブラリを使用できます

検索モジュールではなく、パッケージ構成ファイル (-config.cmake) を作成することです。パッケージ構成ファイルは、FindPackage モジュールが検索するフォルダーの 1 つにインストールする必要があります (/lib/package/ または /lib/cmake/package のようなものが優先されます)。

FindPackage モジュールは、設定ファイルが見つかった場合、自動的に読み込みます。

CMake wiki には、 https: //gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Packaging でより詳細な手順があります。

于 2016-01-17T12:57:31.547 に答える