• Cmake输出git内容方式


    实现背景

    在定位问题时,固件无法获取当前设备中版本的详细信息,无法准确获取版本具体内容

    输出效果

    实现方式

    以下是基于Cmake的语法实现
    在CMake中获取git信息,可以通过execute_process命令运行git命令并将结果保存在一个变量中。然后可以使用configure_file命令将此信息写入一个头文件,最后在main函数中包含此头文件并打印相关信息。

    1. 在CMakeLists.txt文件中,使用execute_process命令运行git命令获取git版本信息,如commit hash和commit日期。例如,可以使用以下命令获取最新的commit hash和日期:
       find_package(Git)
       if(GIT_FOUND)
         execute_process(
           COMMAND ${GIT_EXECUTABLE} log -1 --format=%H
           WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
           OUTPUT_VARIABLE GIT_COMMIT_HASH
           OUTPUT_STRIP_TRAILING_WHITESPACE
         )
         execute_process(
           COMMAND ${GIT_EXECUTABLE} log -1 --format=%cd --date=short
           WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
           OUTPUT_VARIABLE GIT_COMMIT_DATE
           OUTPUT_STRIP_TRAILING_WHITESPACE
         )
       endif()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    1. 使用configure_file命令将git版本信息写入一个头文件。例如,可以创建一个名为version.h的头文件,并在其中定义一些宏来保存git版本信息:
      configure_file(
         ${CMAKE_CURRENT_SOURCE_DIR}/version.h.in
         ${CMAKE_CURRENT_BINARY_DIR}/version.h
       )
    
    • 1
    • 2
    • 3
    • 4
    1. 在version.h.in文件中,定义一些宏来保存git版本信息。例如:
       #define GIT_COMMIT_HASH "@GIT_COMMIT_HASH@"
       #define GIT_COMMIT_DATE "@GIT_COMMIT_DATE@"
    
    • 1
    • 2
    1. 在main函数中,包含version.h文件,并打印git版本信息。例如:
       #include "version.h"
       #include 
    
       int main() {
         printf("Commit hash: %s\n", GIT_COMMIT_HASH);
         printf("Commit date: %s\n", GIT_COMMIT_DATE);
         return 0;
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    说明

    version.h.in 文件是需要手动创建来作为模板,cmake编译的时候回自动生成文件version.h文件,将数据保存到这个变量中,编译出来的固件就会有这些编译出来文件的符号和内容

    参考内容

  • 相关阅读:
    Bug的严重等级和优先级别与分类
    Docker - 发送 Container 日志到 AWS CloudWatch
    JVM 图形化监控工具
    项目经理之如何组建跨部门项目团队
    java基础10题
    教育培训机构寒暑假班学校公众号小程序
    太阳能发电与蓄电池研究(Matlab代码实现)
    华为机考入门python3--(35)牛客35-蛇形矩阵
    一款超强的 Python 分析工具!
    数据库迁移脚本
  • 原文地址:https://blog.csdn.net/qq_21688871/article/details/133996112