1

cmake を使用して libconfig++ ライブラリにリンクしようとしています。apt-get を使用してライブラリをインストールしたので、find_package を使用できるように .cmake ファイルがあると想定しています。問題は、使用するパッケージ名がわからないことです。パッケージ名としてlibconfig、config、config ++を試してみましたが、役に立ちませんでした。

一般的な質問として、ライブラリに関連付けられているパッケージをどのように見つけますか。

find_package が CMAKE_MODULE_PATH を調べて、.cmake スクリプトがあるかどうかを確認することはわかっています。システムの CMAKE_MODULE_PATH の値を調べる方法。環境変数ではありません。私はubuntu 12.04を実行しています。

どんな助けでも大歓迎です。

4

1 に答える 1

7

find_package を使用するには、対応する Find または Config cmake ファイルが必要です。しかし、図書館はそれを提供しないかもしれません.あなたの図書館はそのような場合です. ライブラリの検索には find_library を使用し、インクルード ディレクトリの検索には find_path を使用できます。これらのコマンドを使用すると、FindXXX.cmake を自分で作成することもできます。

CMAKE_MODULE_PATH は環境変数ではなく、CMake のものです。この変数は、モジュールを含む追加のディレクトリがある場合に設定することを目的としています。デフォルトでは空です。これは「モジュール」モードで使用されます。このモードでは、CMake は CMAKE_MODULE_PATH (モジュール) または CMake に同梱されているモジュールで FindXXX.cmake を検索し、見つかった場合は、ライブラリとそのヘッダーを見つけるために使用します。

そのモジュールが見つからない場合は、「構成」モードに切り替わります。Unix では、次のディレクトリで ConfigXXX.cmake を検索します。

<prefix>/(lib/<arch>|lib|share)/cmake/<name>*/
<prefix>/(lib/<arch>|lib|share)/<name>*/
<prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/

このファイルはライブラリに同梱されているため、何も探す必要はありません。ライブラリやインクルードの場所など、すべての情報が含まれています。

命名規則については、標準的なものはありません。Standard CMake modulesを見ることができます。FindLibConfig.cmake という名前のライブラリのインターネットで見つかったモジュール

あなたの場合、ライブラリは対応するcmakeファイルなしで出荷されるため、自分で書いて(またはすでに書かれているのを見つけて)、そのファイルを含むディレクトリをCMAKE_MODULE_PATHに追加する必要があります。

find_package コマンドの仕組みFindXXX.cmake ファイルの書き方を読むことをお勧めします。

于 2012-08-15T07:42:31.577 に答える