afegeix generació de version.h amb git hash

This commit is contained in:
2026-05-19 18:58:56 +02:00
parent 8af4b0c259
commit 748673f41b
3 changed files with 35 additions and 5 deletions
+26 -1
View File
@@ -13,6 +13,30 @@ set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# --- GENERACIÓN DE VERSIÓN AUTOMÁTICA ---
# Si GIT_HASH se ha pasado desde fuera (p.ej. desde el Makefile via -DGIT_HASH=xxx),
# lo usamos tal cual. Esto evita problemas con Docker/emscripten, donde git aborta por
# "dubious ownership" en el volumen montado. En builds locales sin -DGIT_HASH, se
# resuelve aquí ejecutando git directamente.
if(NOT DEFINED GIT_HASH OR GIT_HASH STREQUAL "")
find_package(Git QUIET)
if(GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --short=7 HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
endif()
if(NOT DEFINED GIT_HASH OR GIT_HASH STREQUAL "")
set(GIT_HASH "unknown")
endif()
endif()
# Configurar archivo de versión
configure_file(${CMAKE_SOURCE_DIR}/source/version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY)
# Define el directorio de los archivos fuente
set(DIR_SOURCES "${CMAKE_SOURCE_DIR}/source")
@@ -166,7 +190,8 @@ if(NOT APPLE AND NOT EMSCRIPTEN AND GLSLC_EXE)
endif()
# Includes relatius a source/ (p.e. `#include "core/rendering/texture.h"`)
target_include_directories(${PROJECT_NAME} PRIVATE ${DIR_SOURCES})
# ${CMAKE_BINARY_DIR} per al version.h generat per configure_file.
target_include_directories(${PROJECT_NAME} PRIVATE ${DIR_SOURCES} ${CMAKE_BINARY_DIR})
# Flags de compilació per-target
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic)
+6
View File
@@ -0,0 +1,6 @@
#pragma once
namespace Version {
constexpr const char* GIT_HASH = "@GIT_HASH@";
constexpr const char* APP_NAME = "Coffee Crisis";
} // namespace Version
+3 -4
View File
@@ -3,13 +3,12 @@
#include <string>
#include "core/resources/resource_pack.h"
#include "../../build/version.h" // Version::APP_NAME
namespace {
constexpr const char* APP_NAME = "Coffee Crisis";
void showHelp() {
std::cout << APP_NAME << " - Resource Packer\n";
std::cout << Version::APP_NAME << " - Resource Packer\n";
std::cout << "===============================\n";
std::cout << "Usage: pack_resources [options] [input_dir] [output_file]\n\n";
std::cout << "Options:\n";
@@ -66,7 +65,7 @@ int main(int argc, char* argv[]) {
return 0;
}
std::cout << APP_NAME << " - Resource Packer\n";
std::cout << Version::APP_NAME << " - Resource Packer\n";
std::cout << "===============================\n";
std::cout << "Input directory: " << data_dir << '\n';
std::cout << "Output file: " << output_file << '\n';