cmake-time で VCS からビルド情報を抽出しないのはなぜですか? 次に、CPACK_PACKAGE_FILE_NAME を簡単に変更して、バージョン番号を含めることができます。
追加ボーナス: CMake 時にこれを行う場合、たとえば、CMake のconfigure_fileを使用して "Readme.txt" ファイルに git-info を入力し、それをパッケージに追加できます。または、ビルドで使用される「config.h」を埋めるために使用することもできます。
例:
私自身のプロジェクトの 1 つに、Git を見つけてソース コード リポジトリから現在のチェンジセット ハッシュを抽出する小さな CMake コードがあります。情報を抽出するための最良の Git の方法ではないかもしれませんが、私にとってはうまくいきます...
# First try to find the git-executable
find_program( Git_EXECUTABLE NAMES git git.cmd PATHS
${Git_DIR}
ENV PATHS
$ENV{Git_DIR}
)
# Run "git log -n 1 --pretty="%h" for the current commit-hash
execute_process( COMMAND ${Git_EXECUTABLE} "log" "-n" "1" "--pretty=\"%h\""
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE Git_Commit_Hash
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# and use a regex to strip quotes.
string( REGEX REPLACE "^\"(.*)\"$" "\\1" Git_Commit_Hash ${Git_Commit_Hash} )
結果は、Git_Commit_Hash
CPack のセットアップ時に使用される 7 文字のハッシュ値を持つ変数になります。
set( CPACK_PACKAGE_NAME "MyProject" )
message( STATUS " CPack options: " ${CPACK_PACKAGE_NAME} )
message( STATUS " Preparing CPACK: " )
message( STATUS " and hash: ${Git_Commit_Hash}" )
set( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${Git_Build_Version}_${CPACK_PACKAGE_VERSION}" )