Add BuildVer.h generation

This commit is contained in:
rtm516 2026-03-08 18:20:15 +00:00
parent 01f87d7553
commit a0c4e2783a
No known key found for this signature in database
GPG key ID: 331715B8B007C67A
2 changed files with 75 additions and 1 deletions

View file

@ -111,6 +111,28 @@ target_link_libraries(MinecraftClient PRIVATE
> >
) )
# ---
# Build versioning
# ---
set(BUILDVER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/GenerateBuildVer.cmake")
add_custom_target(GenerateBuildVer
COMMAND ${CMAKE_COMMAND}
"-DOUTPUT_FILE=${CLIENT_DIR}/Common/BuildVer.h"
-P "${BUILDVER_SCRIPT}"
COMMENT "Generating BuildVer.h..."
VERBATIM
)
add_dependencies(MinecraftClient GenerateBuildVer)
add_custom_command(TARGET MinecraftClient POST_BUILD
COMMAND git restore "**/BuildVer.h"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMENT "Restoring BuildVer.h..."
VERBATIM
)
# --- # ---
# Asset / redist copy # Asset / redist copy
# --- # ---
@ -137,4 +159,4 @@ set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MinecraftClient)
# Setup folders for Visual Studio, just hides the build targets under a sub folder # Setup folders for Visual Studio, just hides the build targets under a sub folder
set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(TARGET CopyRedist PROPERTY FOLDER "Build") set_property(TARGET CopyRedist GenerateBuildVer PROPERTY FOLDER "Build")

View file

@ -0,0 +1,52 @@
# Generates BuildVer.h with git version info.
#
# Required:
# OUTPUT_FILE - path to write BuildVer.h
if(NOT OUTPUT_FILE)
message(FATAL_ERROR "OUTPUT_FILE must be set.")
endif()
set(BUILD_NUMBER 560) # Note: Build/network has to stay static for now, as without it builds wont be able to play together. We can change it later when we have a better versioning scheme in place.
set(SUFFIX "")
# Get short SHA
execute_process(
COMMAND git rev-parse --short HEAD
OUTPUT_VARIABLE GIT_SHA
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE rc
)
if(NOT rc EQUAL 0)
set(GIT_SHA "unknown")
endif()
# Get branch name
execute_process(
COMMAND git symbolic-ref --short HEAD
OUTPUT_VARIABLE GIT_REF
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE rc
)
if(NOT rc EQUAL 0)
set(GIT_REF "unknown")
endif()
# If we have uncommitted changes, add a suffix to the version string
execute_process(
COMMAND git status --porcelain
OUTPUT_VARIABLE GIT_STATUS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(GIT_STATUS)
set(SUFFIX "-dev")
endif()
file(WRITE "${OUTPUT_FILE}"
"#pragma once\n"
"\n"
"#define VER_PRODUCTBUILD ${BUILD_NUMBER}\n"
"#define VER_PRODUCTVERSION_STR_W L\"${GIT_SHA}${SUFFIX} (${GIT_REF})\"\n"
"#define VER_FILEVERSION_STR_W VER_PRODUCTVERSION_STR_W\n"
"#define VER_NETWORK VER_PRODUCTBUILD\n"
)