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. 使用configure_file命令将git版本信息写入一个头文件。例如,可以创建一个名为version.h的头文件,并在其中定义一些宏来保存git版本信息:
  configure_file(
     ${CMAKE_CURRENT_SOURCE_DIR}/version.h.in
     ${CMAKE_CURRENT_BINARY_DIR}/version.h
   )
  1. 在version.h.in文件中,定义一些宏来保存git版本信息。例如:
   #define GIT_COMMIT_HASH "@GIT_COMMIT_HASH@"
   #define GIT_COMMIT_DATE "@GIT_COMMIT_DATE@"
  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;
   }

说明

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

参考内容

你可能感兴趣的:(脚本语言,git,elasticsearch,大数据)