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)

この例では、以下の処理が行われます。

  1. CMakeの最低バージョンを3.10に設定します。
  2. プロジェクトの名前をMyProject、バージョン番号を1.2.3に設定します。
  3. includeディレクトリを指定します。
  4. main.cppファイルから実行ファイルMyProgramを作成します。
cmake_minimum_required(VERSION 3.10)

project(MyProject VERSION 1 2 3)

configure_file(version.txt.in version.txt COPYONLY)
  1. CMakeの最低バージョンを3.10に設定します。
  2. プロジェクトの名前をMyProject、バージョン番号を1.2.3に設定します。
  3. version.txt.inファイルをversion.txtにコピーします。
  4. 生成されたversion.txtファイルには、以下の内容が書き込まれます。
Project: MyProject
Version: 1.2.3
  • CMakeには、バージョン情報以外にも様々な情報を設定できるマクロが用意されています。詳細はCMakeドキュメントを参照してください。
  • 上記はあくまで例であり、実際の用途に合わせてコードを調整する必要があります。


手動によるバージョン管理

最もシンプルな方法は、PROJECT_VERSION_MAJORPROJECT_VERSION_MINORPROJECT_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
)
  1. プロジェクトの名前をMyProject、バージョン番号を1.2.3に設定します。
  2. 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)

# ... (他の処理)
  1. my_version_toolという外部ツールを実行し、プロジェクトのバージョン番号を取得します。
  2. 取得したバージョン番号をPROJECT_VERSION変数に格納します。
  3. PROJECT_VERSION_MAJORPROJECT_VERSION_MINORPROJECT_VERSION_PATCH変数に、バージョン番号を分割して設定します。

最適な方法の選択

どの方法が最適かは、プロジェクトの規模、複雑性、バージョン管理のニーズによって異なります。

  • 複雑なバージョン番号スキームを持つプロジェクトや、CI/CDパイプラインで使用する場合には、CMake外部ツールを使用するのが良いでしょう。
  • バージョン管理システムを使用している場合は、そのシステムを使用してバージョン番号を管理することをお勧めします。
  • 小規模なプロジェクトや、バージョン管理システムを使用していない場合は、手動によるバージョン管理が最も簡単です。