Git 如何使用动态版本号将版本号硬编码到cmake cpack中

Git 如何使用动态版本号将版本号硬编码到cmake cpack中,git,cmake,packaging,Git,Cmake,Packaging,我有一个CMakeLists.txt,它指定了没有硬编码版本号的项目: project (project_name C CXX) 然后再往下一点,使用函数根据git descripe计算出版本号: include(GetGitRevisionDescription) git_describe(GIT_VERSION --tags) string(REGEX REPLACE "-([0-9]*).*" ".\\1" VERSION "${GIT_VERSION}") 使用cmake从git存储

我有一个
CMakeLists.txt
,它指定了没有硬编码版本号的项目:

project (project_name C CXX)
然后再往下一点,使用函数根据git descripe计算出版本号:

include(GetGitRevisionDescription)
git_describe(GIT_VERSION --tags)
string(REGEX REPLACE "-([0-9]*).*" ".\\1" VERSION "${GIT_VERSION}")
使用
cmake
从git存储库构建项目的结果非常好,标记的提交有正确的版本,之后的头构建有一个额外的字段(调整版本),带有自上次标记以来提交的计数器

问题是,当使用CPack绑定源tarball时,tarball中的
CMakeLists.txt
不再有办法确定它自己的版本(到
.git
目录以及所有这些)

如何更改tarball中生成的
CMakeLists.txt
,使其具有硬编码版本号