c/c++中将git当前版本信息编译到可执行文件中
2016-01-06 12:01
411 查看
使用简单Makefile,则可直接添加宏定义:
CPPFLAGS+=-DGIT_SHA1="$(shell git log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1)"
使用CMake,在CMakeList.txt中添加:
exec_program(
"git"
${CMAKE_CURRENT_SOURCE_DIR}
ARGS "log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1"
OUTPUT_VARIABLE VERSION_SHA1 )
add_definitions( -DGIT_SHA1="${VERSION_SHA1}" )
CMake也可通过使用https://github.com/rpavlik/cmake-modules里的扩展GetGitRevisionDescription。
然后在代码中根据宏GIT_SHA1来进行相应的打印输出,方便追踪对应的版本信息。
ps: 如果不使用宏,也可替换源文件方法,或者CMakefile中使用configure_file来进行管理xxx.cpp.in文件编译。
CPPFLAGS+=-DGIT_SHA1="$(shell git log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1)"
使用CMake,在CMakeList.txt中添加:
exec_program(
"git"
${CMAKE_CURRENT_SOURCE_DIR}
ARGS "log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1"
OUTPUT_VARIABLE VERSION_SHA1 )
add_definitions( -DGIT_SHA1="${VERSION_SHA1}" )
CMake也可通过使用https://github.com/rpavlik/cmake-modules里的扩展GetGitRevisionDescription。
然后在代码中根据宏GIT_SHA1来进行相应的打印输出,方便追踪对应的版本信息。
ps: 如果不使用宏,也可替换源文件方法,或者CMakefile中使用configure_file来进行管理xxx.cpp.in文件编译。
相关文章推荐
- C++11多线程(十三):《C++11 内存模型一:介绍》
- C++11多线程(十二):《atomic 类型详解四:C 风格原子操作介绍》
- iOS之 C++与oc混编
- C++11多线程(十一):《atomic类型详解二:std::atomic》
- C语言运算符优先级与结合性
- C#调用C++DLL 使用 德卡 读卡器 获取身份证信息
- C++ STL之stack
- 标准C语言字符串函数
- c++ primer 学习笔记19 map容器
- C++中变量和类的定义
- C++11多线程(十):atomic原子操作的高效率(实例)
- CPPUTest 单元测试框架(针对 C 单元测试的使用说明)
- STL之list容器函数用法详解
- AFE4400数据处理——C语言实现22位数据转换
- 帮 C/C++ 程序员彻底了解链接器
- C++Lamda表达式
- c++中如何通过函数参数对指针进行赋值
- 在用到iframe的前端页面调用c++的或者android方法时提示找不到方法问题解决
- [Qt C++] 连连看
- 多项式加法利用链表实现(c语言)