add git derived version info

This commit is contained in:
mq1n
2025-09-02 20:25:54 +03:00
parent dcc6675208
commit fd1df0b328
5 changed files with 42 additions and 2 deletions

View File

@@ -36,6 +36,34 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
# Derive a version string from git for the db target
find_package(Git QUIET)
if(GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_SOURCE_DIR} describe --always --dirty --tags
OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
endif()
if(NOT GIT_DESCRIBE_VERSION)
if(GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_SOURCE_DIR} rev-parse --short HEAD
OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
else()
set(GIT_DESCRIBE_VERSION "unknown")
endif()
endif()
if(NOT GIT_DESCRIBE_VERSION)
set(GIT_DESCRIBE_VERSION "unknown")
endif()
add_definitions(-DNOMINMAX)
add_definitions(-DWIN32_LEAN_AND_MEAN)

View File

@@ -2,6 +2,8 @@
add_executable(db ${DB_SOURCES})
target_compile_definitions(db PRIVATE GIT_DESCRIBE="${GIT_DESCRIBE_VERSION}")
target_link_libraries(db
common
libgame

View File

@@ -1,6 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#ifndef GIT_DESCRIBE
#define GIT_DESCRIBE "unknown"
#endif
void WriteVersion()
{
#ifndef OS_WINDOWS
@@ -8,7 +12,7 @@ void WriteVersion()
if (NULL != fp)
{
fprintf(fp, "db revision: %s\n", __P4_VERSION__);
fprintf(fp, "db revision: %s\n", GIT_DESCRIBE);
//fprintf(fp, "%s@%s:%s\n", __USER__, __HOSTNAME__, __PWD__);
fclose(fp);
}

View File

@@ -2,6 +2,8 @@
add_executable(game ${GAME_SOURCES})
target_compile_definitions(game PRIVATE GIT_DESCRIBE="${GIT_DESCRIBE_VERSION}")
target_link_libraries(game
common
libgame

View File

@@ -1,5 +1,9 @@
#include <stdio.h>
#ifndef GIT_DESCRIBE_VERSION
#define GIT_DESCRIBE_VERSION "unknown"
#endif
void WriteVersion()
{
#ifndef OS_WINDOWS
@@ -7,7 +11,7 @@ void WriteVersion()
if (fp)
{
fprintf(fp, "game revision: 40250");
fprintf(fp, "game revision: %s\n", GIT_DESCRIBE_VERSION);
//fprintf(fp, "game revision: %s\n", __SVN_VERSION__);
//fprintf(fp, "%s@%s:%s\n", __USER__, __HOSTNAME__, __PWD__);
fclose(fp);