13,061
回編集
| 402行目: | 402行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
== find_packageコマンド == | |||
<code>find_package</code>コマンドは、特定の名前のCMakeスクリプトを検索して、該当のスクリプトを実行するコマンドである。<br> | |||
<br> | |||
対象となるCMakeスクリプトは、その役割に応じて、ModuleとConfigの2種類に分類される。<br> | |||
<code>find_package</code>コマンドは、Module -> Configの順で検索を行う。<br> | |||
<br> | |||
具体的な動作は以下のとおりです。 | |||
* Module<br><パッケージ名>.cmakeファイル、または、Find<パッケージ名>.cmakeファイルを検索する。 | |||
** CMakeキャッシュ変数である変数<code>CMAKE_MODULE_PATH</code>で指定されたパス | |||
** CMakeにデフォルトで付いてくるモジュールの配置ディレクトリ (/usr/local/share/cmake/Modulesディレクトリ等) | |||
*: <br> | |||
* Config<br><パッケージ名>Config.cmakeファイル、または、<パッケージ名(小文字)>-config.cmakeファイルを検索する。 | |||
** CMake変数<code><PackageName>_DIR</code>で指定されたパス | |||
** CMakeキャッシュ変数である変数<code><パッケージ名>_ROOT</code>で指定されたパス | |||
** 環境変数<code><パッケージ名>_ROOT</code>で指定されたパス | |||
** CMakeキャッシュ変数である変数<code>CMAKE_PREFIX_PATH</code>、変数<code>CMAKE_FRAMEWORK_PATH</code>、変数<code>CMAKE_APPBUNDLE_PATH</code>で指定されたパス | |||
** 環境変数<code><パッケージ名>_DIR</code>、環境変数<code>CMAKE_PREFIX_PATH</code>、環境変数<code>CMAKE_FRAMEWORK_PATH</code>、環境変数<code>CMAKE_APPBUNDLE_PATH</code>で指定されたパス | |||
** 環境変数<code>PATH</code>で指定されたパス (binディレクトリおよびsbinディレクトリで終わるディレクトリの場合は、その親ディレクトリに読み替える) | |||
** その他 | |||
<br> | |||
なお、コマンド終了時において、CMake変数<code><パッケージ名>_FOUND</code>に<code>0</code>または<code>1</code>(<code>FALSE</code>または<code>TRUE</code>)が格納されるため、<br> | |||
正常に検索できたかどうかを条件分岐として記述することもできる。<br> | |||
<br> | |||
==== Config (CMakeスクリプト) ==== | |||
Configファイルは、CMakeプロジェクトをビルドしてライブラリをインストールした時に生成される設定ファイルである。<br> | |||
ファイル名は、<code><パッケージ名>Config.cmake</code>ファイル、または、<code><パッケージ名(小文字)>-config.cmake</code>ファイルである。<br> | |||
<br> | |||
ライブラリ情報を提供する点ではFindモジュールと同様であるが、Configファイルはライブラリの開発元が直接提供している設定ファイルである。<br> | |||
ライブラリをインストールした時、cmakeディレクトリやshareディレクトリの中に含まれていることが多い。<br> | |||
<br> | |||
Findモジュールと同様、多くのConfigファイルは以下に示すようなCMake変数が存在する。<br> | |||
また、これらの情報を1つのターゲットにまとめている場合もある。<br> | |||
* <パッケージ名>_INCLUDE_DIRS | |||
*: インクルードディレクトリのパス | |||
* <パッケージ名>_LIBRARY_DIRS | |||
*: ライブラリファイルがあるディレクトリのパス | |||
* <パッケージ名>_LIBRARIES | |||
*: ライブラリファイル名のリスト | |||
* <パッケージ名>_DEFINITIONS | |||
*: コンパイル時の<code>definition</code>フラグ | |||
<br> | |||
<u>Configファイルを使用する場合、開発元が公開しているドキュメントやConfigファイルの内容から、各変数名や各ターゲット名を確認する必要がある。</u><br> | |||
<br> | |||
Linuxにおいて、Configファイルの場所は以下に示すようなディレクトリに配置される。<br> | |||
また、初期設定より、/usr/binディレクトリは環境変数<code>PATH</code>に設定されているため、CMakeは自動的にConfigファイルを見つけることができる。<br> | |||
* /usr/lib64/cmake/<パッケージ名> | |||
* /usr/share/cmake/<パッケージ名> | |||
<br> | |||
したがって、Linuxでは、パッケージ管理システムからインストールしたライブラリは、<code>find_package</code>コマンドで見つけることができる。<br> | |||
もし、ライブラリにConfigファイルが付属していない場合、開発者自身でFindモジュールを作成する必要がある。<br> | |||
<br> | |||
<u>また、他の場所にライブラリをインストールしている場合は、CMakeキャッシュ変数<code><パッケージ名>_DIR</code>にライブラリのパスを設定することにより、Configファイルを見つけることができる。</u><br> | |||
== CMakeとqmakeの特徴 == | == CMakeとqmakeの特徴 == | ||