CMakeでバージョン番号を自在に操る!PROJECT_VERSION_MINOR変数の詳細解説
CMakeのPROJECT_VERSION_MINOR
変数は、プロジェクトのバージョン番号のマイナーバージョンを定義するために使用されます。プロジェクトのバージョン管理に役立ち、ビルドシステムや依存関係の管理に活用できます。
構文
project(PROJECT_NAME VERSION MAJOR MINOR PATCH)
上記の構文で、MINOR
にはマイナーバージョン番号を指定します。バージョン番号はカンマ区切りの整数で表記します。
例
project(MyProject VERSION 1 2 3)
この例では、プロジェクトの名前はMyProject
、バージョン番号は1.2.3
となります。ここで2
がマイナーバージョンを表します。
- 設定されたバージョン番号は、
configure_file
コマンドなどを利用して、プロジェクト内のソースコードや設定ファイルに埋め込むことができます。 - これらの変数は、
CMakeLists.txt
ファイル内でプロジェクト定義マクロとともに設定されます。 PROJECT_VERSION_PATCH
変数はパッチバージョン番号を定義します。PROJECT_VERSION_MAJOR
変数はメジャーバージョン番号を定義します。
利点
- ソースコードや設定ファイルへのバージョン情報埋め込みが可能になります。
- ビルドシステムや依存関係の管理を簡素化します。
- プロジェクトのバージョン管理を容易にします。
- 変更を行う際は、十分なテストと文書化が必要です。
- バージョン番号の変更は、互換性に影響を与える可能性があります。
cmake_minimum_required(VERSION 3.10)
project(MyProject VERSION 1 2 3)
set(CMAKE_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/include)
add_executable(MyProgram main.cpp)
この例では、以下の処理が行われます。
- CMakeの最低バージョンを3.10に設定します。
- プロジェクトの名前を
MyProject
、バージョン番号を1.2.3
に設定します。 include
ディレクトリを指定します。main.cpp
ファイルから実行ファイルMyProgram
を作成します。
cmake_minimum_required(VERSION 3.10)
project(MyProject VERSION 1 2 3)
configure_file(version.txt.in version.txt COPYONLY)
- CMakeの最低バージョンを3.10に設定します。
- プロジェクトの名前を
MyProject
、バージョン番号を1.2.3
に設定します。 version.txt.in
ファイルをversion.txt
にコピーします。- 生成された
version.txt
ファイルには、以下の内容が書き込まれます。
Project: MyProject
Version: 1.2.3
- CMakeには、バージョン情報以外にも様々な情報を設定できるマクロが用意されています。詳細はCMakeドキュメントを参照してください。
- 上記はあくまで例であり、実際の用途に合わせてコードを調整する必要があります。
手動によるバージョン管理
最もシンプルな方法は、PROJECT_VERSION_MAJOR
、PROJECT_VERSION_MINOR
、PROJECT_VERSION_PATCH
変数を手動で設定する方法です。これは、小規模なプロジェクトや、バージョン管理システムを使用していない場合に適しています。
例
cmake_minimum_required(VERSION 3.10)
project(MyProject VERSION 1 2 3)
# ... (他の処理)
バージョン管理システムの利用
Gitなどのバージョン管理システムを使用して、バージョン番号を管理する方法もあります。この方法では、バージョン番号の変更履歴を追跡することができ、過去のバージョンに簡単にロールバックすることができます。
例
project(MyProject VERSION 1.2.3)
# ... (他の処理)
add_custom_command(
TARGET version_info
COMMAND git describe --tags --always --dirty
OUTPUT version.txt
)
- プロジェクトの名前を
MyProject
、バージョン番号を1.2.3
に設定します。 - Gitのコミット情報からバージョン情報を取得し、
version.txt
ファイルに保存します。
CMake外部ツールによるバージョン管理
CMakeの外部ツールを使用して、バージョン番号を自動的に生成する方法もあります。この方法は、複雑なバージョン番号スキームを持つプロジェクトや、CI/CDパイプラインで使用する場合に適しています。
例
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# 外部ツールでバージョン番号を取得する
execute_process(
COMMAND my_version_tool
OUTPUT_VARIABLE PROJECT_VERSION
OUTPUT_QUIET
)
# バージョン番号を設定する
set(PROJECT_VERSION_MAJOR ${PROJECT_VERSION})
set(PROJECT_VERSION_MINOR 0)
set(PROJECT_VERSION_PATCH 0)
# ... (他の処理)
my_version_tool
という外部ツールを実行し、プロジェクトのバージョン番号を取得します。- 取得したバージョン番号を
PROJECT_VERSION
変数に格納します。 PROJECT_VERSION_MAJOR
、PROJECT_VERSION_MINOR
、PROJECT_VERSION_PATCH
変数に、バージョン番号を分割して設定します。
最適な方法の選択
どの方法が最適かは、プロジェクトの規模、複雑性、バージョン管理のニーズによって異なります。
- 複雑なバージョン番号スキームを持つプロジェクトや、CI/CDパイプラインで使用する場合には、CMake外部ツールを使用するのが良いでしょう。
- バージョン管理システムを使用している場合は、そのシステムを使用してバージョン番号を管理することをお勧めします。
- 小規模なプロジェクトや、バージョン管理システムを使用していない場合は、手動によるバージョン管理が最も簡単です。