爱站工具包的模块,自适应网站制作费用,网站建设需要写语句吗,腾讯云网站建设在写代码的时候#xff0c;总是需要添加一个版本号#xff0c;用于后续的版本管理
我常遇到的一个问题是#xff0c;开发过程中#xff0c;不一定会记得这件事情#xff0c;导致有时候会出现同样的版本
于是希望有一个方式#xff0c;能在编译代码的时候自动生成一个版…
在写代码的时候总是需要添加一个版本号用于后续的版本管理
我常遇到的一个问题是开发过程中不一定会记得这件事情导致有时候会出现同样的版本
于是希望有一个方式能在编译代码的时候自动生成一个版本号
1.创建update_version.cmake文件
# 设置项目版本号
set(PROJECT_VERSION_MAJOR 1)
set(PROJECT_VERSION_MINOR 0)# 读取 version.h 文件
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/version.h)# 读取 PROJECT_VERSION_PATCH 的值file(READ version.h VERSION_H_CONTENTS)string(REGEX MATCH PROJECT_VERSION_PATCH \([0-999])\ _match ${VERSION_H_CONTENTS})set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_1})message(STATUS Read patch: ${PROJECT_VERSION_PATCH})# 将 PROJECT_VERSION_PATCH 值加 1math(EXPR PROJECT_VERSION_PATCH ${PROJECT_VERSION_PATCH} 1)set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})message(STATUS 更新版本号: ${PROJECT_VERSION})
else()set(PROJECT_VERSION_PATCH 1)
endif()# 获取编译日期
string(TIMESTAMP PROJECT_COMPILE_YEAR %Y UTC)
string(TIMESTAMP PROJECT_COMPILE_MONTH %m UTC)
string(TIMESTAMP PROJECT_COMPILE_DAY %d UTC)
string(TIMESTAMP PROJECT_COMPILE_TIME %Y-%m-%d %H:%M:%S UTC)# 生成版本文件
configure_file(version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/version.h ONLY)2.创建version.h.in文件
#ifndef VERSION_H
#define VERSION_H#define PROJECT_VERSION_MAJOR PROJECT_VERSION_MAJOR
#define PROJECT_VERSION_MINOR PROJECT_VERSION_MINOR
#define PROJECT_VERSION_PATCH PROJECT_VERSION_PATCH
#define PROJECT_VERSION PROJECT_VERSION#define PROJECT_COMPILE_YEAR PROJECT_COMPILE_YEAR
#define PROJECT_COMPILE_MONTH PROJECT_COMPILE_MONTH
#define PROJECT_COMPILE_DAY PROJECT_COMPILE_DAY
#define PROJECT_COMPILE_TIME PROJECT_COMPILE_TIME#endif
3.创建version.h文件
无内容
4.修改cmakelist.txt文件
# 创建自定义目标, 执行 update_version.cmake 脚本
add_custom_target(update_versionCOMMAND ${CMAKE_COMMAND} -D GIT_VERSION${GIT_VERSION} -P ${CMAKE_CURRENT_SOURCE_DIR}/update_version.cmakeWORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)add_dependencies(${PROJECT_NAME} update_version)
5.使用效果 会在目录下自动生成一个版本头文件
重新编译一下
版本文件会自动更新