FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

CMakeでバージョン番号を管理する

CMakeのチュートリアルに書いてあるのだが、CMakeでビルドする度にバージョン番号やリビジョン番号を設定するためには、以下のような方法がある。

http://www.cmake.org/cmake-tutorial/

github.com

CMakeLists.txtの中で以下のような記述をしている。

execute_process (COMMAND date +%Y%m%d OUTPUT_VARIABLE CMAKE_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process (COMMAND git rev-parse --short HEAD OUTPUT_VARIABLE CMAKE_REVISION OUTPUT_STRIP_TRAILING_WHITESPACE)

set (VERSION ${CMAKE_VERSION})
set (REVISION ${CMAKE_REVISION})

configure_file ("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_SOURCE_DIR}/version.h")

これは、外部コマンドを実行して、CMAKE_VERSIONに日付の数値、CMAKE_REVISIONにgitのハッシュ番号のshort形式を挿入している。 そして、それらをVERSION,REVISIONという変数に格納している。

VERSION, REVISIONはどこで使うのかというと、それはconfigure_fileで記述している。

$ cat version.h.in

#pragma once

#define VERSION "@VERSION@"
#define REVISION "@REVISION@"

@VERSION@, @REVISION@ が、CMake側で設定したもの、それがdefineとして定義され、プログラム中で利用することができる。