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

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)

相关推荐

  1. Git-如何基于某个tag创建一个新分支

    2024-07-10 16:56:03       12 阅读
  2. git tag用法详解

    2024-07-10 16:56:03       35 阅读
  3. git 查看tag创建tag以及上传tag命令

    2024-07-10 16:56:03       41 阅读
  4. Git 开源版本控制系统-05-tags 标签管理

    2024-07-10 16:56:03       33 阅读
  5. git中常用tag命令

    2024-07-10 16:56:03       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 16:56:03       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 16:56:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 16:56:03       4 阅读
  4. Python语言-面向对象

    2024-07-10 16:56:03       6 阅读

热门阅读

  1. opencv 设置超时时间

    2024-07-10 16:56:03       12 阅读
  2. Nginx Websocket 协议配置支持

    2024-07-10 16:56:03       10 阅读
  3. Perl语言入门到高级学习

    2024-07-10 16:56:03       10 阅读
  4. 【 HTML基础知识】

    2024-07-10 16:56:03       9 阅读
  5. Vue3框架搭建3:配置说明-prettier配置

    2024-07-10 16:56:03       9 阅读
  6. Python基础练习•二

    2024-07-10 16:56:03       13 阅读
  7. 【Unity】ScreenToWorldPoint转换三维空间MousePosition

    2024-07-10 16:56:03       11 阅读
  8. AD确定板子形状

    2024-07-10 16:56:03       9 阅读