欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 基于cmake为项目自动获取git分支tag的版本号和commitid

基于cmake为项目自动获取git分支tag的版本号和commitid

2024/10/23 23:26:15 来源:https://blog.csdn.net/bluestn/article/details/140319504  浏览:    关键词:基于cmake为项目自动获取git分支tag的版本号和commitid

目录

  • 1. 引言
  • 2. 实现过程
    • 2.1 工程目录规划
    • 2.2 c程序文件
    • 2.3 CMakeLists.txt
    • 2.4 GitVersion.cmake文件
    • 2.5 BuildNumber.cmake文件

1. 引言

  在项目构建的时候,我们经常会希望能够将git提交的分支信息和提交号(commitid)以及当前版本发布的tag信息作为版本号自动构建到程序里面,以便后续能够快速定位所运行的程序所定影的git源码的版本,从而快速发现和定位问题。
  本文利用cmake的自动构建能力,来实现以下信息的自动提取并构建到程序中:

  • 当前代码的git 分支名
  • 当前代码的git 提交号(commitid)
  • 当前代码的tag所设置的版本号
  • 当前代码的构建时间
  • 当前代码的构建号(buildno)

  以下以c语言构成为例,展示了利用cmake自动生成config.h文件,将以上信息自动集成到c语言工程代码中的过程。

2. 实现过程

2.1 工程目录规划

  如下图:
在这里插入图片描述|300

  其中有c语言源码都放在工程根目录下面,当然,对于比较大型的工程,可以对源码目录进行更细地拆分和规划,本demo只有一个test.c和config.h的c源码文件,因此源码目录从简。
  创建一个cmake目录,用来存放自定义的cmake模块文件。
  创建一个build目录,用来存放cmake运行所产生的输出文件。

2.2 c程序文件

  test.c 文件的内容如下:

#include <stdio.h>
#include "config.h"int main()
{printf("version: %s\n", PROJECT_VERSION);printf("commit:  %s\n", GIT_COMMITID);printf("branch:  %s\n", GIT_BRANCH)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com