55 lines
1.6 KiB
CMake
55 lines
1.6 KiB
CMake
# gen_version.cmake - 自动生成版本信息头文件
|
|||
|
|
# 包含版本号、编译时间、Git 信息
|
||
|
|
|
||
|
|
# 版本号(可手动修改)
|
||
|
|
set(FW_VERSION_MAJOR 0)
|
||
|
|
set(FW_VERSION_MINOR 3)
|
||
|
|
set(FW_VERSION_PATCH 10)
|
||
|
|
|
||
|
|
# 获取编译时间
|
||
|
|
string(TIMESTAMP BUILD_TIME "%Y-%m-%d %H:%M:%S")
|
||
|
|
|
||
|
|
# 获取 Git 信息(如果可用)
|
||
|
|
find_package(Git QUIET)
|
||
|
|
if(GIT_FOUND)
|
||
|
|
execute_process(
|
||
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
|
||
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||
|
|
OUTPUT_VARIABLE GIT_HASH
|
||
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||
|
|
ERROR_QUIET
|
||
|
|
)
|
||
|
|
else()
|
||
|
|
set(GIT_HASH "unknown")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
# 生成版本头文件
|
||
|
|
set(VERSION_HEADER_CONTENT
|
||
|
|
"// Auto-generated version info - DO NOT EDIT
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
// 固件版本
|
||
|
|
#define FW_VERSION_MAJOR ${FW_VERSION_MAJOR}
|
||
|
|
#define FW_VERSION_MINOR ${FW_VERSION_MINOR}
|
||
|
|
#define FW_VERSION_PATCH ${FW_VERSION_PATCH}
|
||
|
|
#define FW_VERSION_STRING \"${FW_VERSION_MAJOR}.${FW_VERSION_MINOR}.${FW_VERSION_PATCH}\"
|
||
|
|
|
||
|
|
// 编译时间
|
||
|
|
#define BUILD_TIME \"${BUILD_TIME}\"
|
||
|
|
|
||
|
|
// Git 信息
|
||
|
|
#define GIT_HASH \"${GIT_HASH}\"
|
||
|
|
")
|
||
|
|
|
||
|
|
# 检查文件是否需要更新
|
||
|
|
if(EXISTS ${VERSION_HEADER_PATH})
|
||
|
|
file(READ ${VERSION_HEADER_PATH} EXISTING_CONTENT)
|
||
|
|
if(NOT "${EXISTING_CONTENT}" STREQUAL "${VERSION_HEADER_CONTENT}")
|
||
|
|
file(WRITE ${VERSION_HEADER_PATH} "${VERSION_HEADER_CONTENT}")
|
||
|
|
message(STATUS "Version header updated: ${VERSION_HEADER_PATH}")
|
||
|
|
endif()
|
||
|
|
else()
|
||
|
|
file(WRITE ${VERSION_HEADER_PATH} "${VERSION_HEADER_CONTENT}")
|
||
|
|
message(STATUS "Version header generated: ${VERSION_HEADER_PATH}")
|
||
|
|
endif()
|