cmake获取svn版本信息

说明

通过cmake在编译阶段获取svn版本信息,并生成宏提供代码使用

获取svn信息

cmake获取svn信息,并定义宏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(UNIX)
# 获取svn信息,svn info 可以填相对/绝对路径或者远程地址
execute_process(COMMAND svn info http://192.168.6.124/usvn/public/svn/develop_cpp
COMMAND grep -E "Rev:|Author:|Date:"
COMMAND cut -d " " -f 4
TIMEOUT 3
OUTPUT_VARIABLE SvnData)
# 拆分信息
string(REPLACE "\n" ";" SEXY_LIST ${SvnData})
list(GET SEXY_LIST 0 SvnAuthor)
list(GET SEXY_LIST 1 SvnRev)
list(GET SEXY_LIST 2 SvnDate)
message(STATUS "SvnAuthor: ${SvnAuthor}")
message(STATUS "SvnRev: ${SvnRev}")
message(STATUS "SvnDate: ${SvnDate}")
# 定义宏
target_compile_definitions(${PROJECT_NAME} PUBLIC SVN_REV=${SvnRev})
target_compile_definitions(${PROJECT_NAME} PUBLIC SVN_AUTHOR=${SvnAuthor})
target_compile_definitions(${PROJECT_NAME} PUBLIC SVN_DATE=${SvnDate})
endif()

使用svn信息宏

c++打印svn信息

1
2
3
4
5
6
7
8
#ifndef WIN32
# define MACRO_(v) #v
# define SHOWMACOR(v) MACRO_(v)
LogDebug("=============Svn Info===============");
LogDebug("Last Changed Author: {}", SHOWMACOR(SVN_AUTHOR));
LogDebug("Last Changed Rev: {}", SHOWMACOR(SVN_REV));
LogDebug("Last Changed Date: {}", SHOWMACOR(SVN_DATE));
#endif // !1