CMake のマニュアルからの抄訳です。
デバッグのお供に
下記のコマンドで、find_packageが<package>-config.cmake を検索したパスを表示できる。
buildディレクトリを削除して、設定値のキャッシュを消す必要があるかもしれない。
cmake .. -DCMAKE_FIND_DEBUG_MODE=1
.. の部分は、ソースツリーの場所にあわせて変更すること。
find_package の検索ロジック
find_package には Module モードと Config モードの2種類のモードがある。
通常は、まず Module モードで検索してから、 Config モードにフォールバックする。
Module モード
Find<package>.cmake を検索する。
- CMakeのインストール先 (e.g.
/usr/local/share/cmake-2.8/Modules) - 環境変数
CMAKE_MODULE_PATHに設定したパス
Config モード
後述の規定のディレクトリから、<package>Config.cmake または <lower-case-package>-config.cmake を検索する。
<package>_DIR 変数で検索対象のパスを指定できる。
検索対象のディレクトリ
-
<prefix>については後述。 -
<name>は、<package>またはNAMESオプションで指定した名前
Windows
<prefix>/<prefix>/(cmake|CMake)<prefix>/<name>*/<prefix>/<name>*/(cmake|CMake)
Linux
<prefix>/(lib/<arch>|lib|share)/cmake/<name*>/<prefix>/(lib/<arch>|lib|share)/<name*>/<prefix>/(lib/<arch>|lib|share)/<name*>/cmake/
<prefix> に使用されるパス
以下のパスが <prefix> として使用される。
- cmakeのキャッシュ (cmake のコマンドライン引数に
-DVAR=value形式で指定する)。 コマンドにNO_CMAKE_PATHオプションを指定するとスキップされる。
CMAKE_PREFIX_PATHCMAKE_FRAMEWORK_PATHCMAKE_APPBUNDLE_PATH
- cmake 環境変数。コマンドに
NO_CMAKE_ENVIRONTMENT_PATHオプションを指定するとスキップされる。
<package>_DIRCMAKE_PREFIX_PATHCMAKE_FRAMEWORK_PATHCMAKE_APPBUNDLE_PATH
-
HINTSオプションで指定したパス -
システムの環境変数。
NO_SYSTEM_ENVIRONMENT_PATHを指定するとスキップされる。
環境変数PATHのエントリが、/binか/sbinで終わる場合はその親ディレクトリに変換される。 -
cmake-gui で設定したプロジェクトビルドツリー (Windows only)
-
User Package Registry に格納されたパス。
NO_CMAKE_PACKAGE_REGISTRYを指定するとスキップされる。 -
cmakeのシステムパス
CMAKE_SYSTEM_PREFIX_PATHCMAKE_SYSTEM_FRAMEWORK_PATHCMAKE_SYSTEM_APPBUNDLE_PATH
-
System Package Registry に格納されたパス
NO_CMAKE_SYSTEM_PACKAGE_REGISTRYを指定するとスキップされる。 -
PATHSオプションで指定したパスのリスト。