CMake - バージョン管理
概要
CMakeは、新しいツールやプラットフォーム、機能のサポートを追加するために継続的に更新および拡張されている。
開発者は、新しいリリースごとに後方互換性を維持することに非常に注意を払うことになる。
そのため、ユーザがCMakeの新しいバージョンに更新した時、プロジェクトは以前と同じようにビルドし続けることができる。
時には、CMakeの特定の動作を変更する必要があったり、より厳しいチェックや警告が新しいバージョンで導入されたりすることがある。
全てのプロジェクトに直ちにこのような対応を要求するのではなく、CMakeはプロジェクトが"CMakeのバージョン X.Y.Zのように振る舞う"というようなポリシー機構を提供する。
CMakeのバージョン管理 (cmake_minimum_requiredコマンド)
CMakeのバージョン動作の詳細を指定する主な方法は、cmake_minimum_required
コマンドを使用することである。
これは、CMakeLists.txtファイルの最初の行で記述するべきであり、プロジェクトの要件が他の何よりも先にチェックされ、確立されるようにするものである。
cmake_minimum_required
コマンドは、以下に示す2つのことを実行する。
- プロジェクトが必要とするCMakeの最小バージョンを指定する。
CMakeLists.txtファイルが指定されたバージョンより古いCMakeのバージョンで処理された場合、エラーが発生して直ちに停止する。
これにより、処理を進める前に、CMakeの機能の特定の最小セットが利用可能であることが保証される。 - CMakeの動作を指定されたバージョンに一致させるためのポリシー設定を強制するものである。
もし、cmake_minimum_required
コマンドを記述しない場合は、警告が出力される。
多くのプロジェクトでは、cmake_minimum_required
コマンドは、単に必要最小限のCMakeのバージョンを指定するものとして扱えば十分である。
cmake_minimum_required(VERSION <メジャー番号>.<マイナー番号>[.<バグフィックス番号>.<ビルド番号>])
VERSION
オプションは常に必要であり、<メジャー番号>
および<マイナー番号>
も記述する必要がある。
多くのCMakeプロジェクトでは、<バグフィックス番号>
および<ビルド番号>
を指定する必要はない。
これは、CMakeの新しい機能はマイナー番号のアップデートでのみ現れるためである。
そのため、特定のバグフィックスが必要な場合のみ、<バグフィックス番号>
を指定すべきである。
さらに、CMake 3.0以降では、<ビルド番号>
を使用していないため、指定する必要はない。
詳細を知りたい場合は、Qtの設定 - CMake#CMakeのポリシー設定において、cmake_minimum_required
コマンドの挙動を調整する方法を参照すること。
これにより、CMakeは内部でバグを修正し、新しい機能を導入しながらも、過去の特定のリリースの期待される振る舞いを維持することができる。