Mise en place du versionnement horodaté (même mécanisme que shipheart_qt) : génération de _version.h à chaque build, archivage automatique d'une copie horodatée de l'exécutable dans versions/, affichage de la version au démarrage

This commit is contained in:
2026-09-24 08:52:06 +02:00
parent 88591790d0
commit b74f14452e
15 changed files with 98 additions and 0 deletions
+27
View File
@@ -7,8 +7,35 @@ set(CMAKE_AUTOMOC ON)
find_package(Qt6 REQUIRED COMPONENTS Core HttpServer Sql)
# ---------------------------------------------------------------------------
# Version dynamique, injectée dans _version.h à CHAQUE build - même mécanisme
# que shipheart_qt (cf synthèse, format yymmdd_HHMMSS, ex: 260924_080910) :
# une cible personnalisée sans suivi de fichier est toujours considérée
# périmée par Ninja/Make et se ré-exécute avant chaque build, contrairement à
# string(TIMESTAMP ...) seul qui ne s'évalue qu'à la configuration du projet.
# ---------------------------------------------------------------------------
add_custom_target(generate_version ALL
COMMAND ${CMAKE_COMMAND}
-DOUTPUT_FILE=${CMAKE_CURRENT_SOURCE_DIR}/_version.h
-P ${CMAKE_CURRENT_SOURCE_DIR}/generate_version.cmake
COMMENT "Régénération de _version.h (horodatage)"
BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/_version.h
)
add_executable(shipheart_api
main.cpp
# Header listé pour visibilité dans l'IDE (non obligatoire pour la compilation) :
_version.h
)
add_dependencies(shipheart_api generate_version)
add_custom_command(TARGET shipheart_api POST_BUILD
COMMAND ${CMAKE_COMMAND}
-DEXE_PATH=$<TARGET_FILE:shipheart_api>
-DSRC_DIR=${CMAKE_CURRENT_SOURCE_DIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/archive_version.cmake
COMMENT "Archivage d'une copie horodatée de l'exécutable"
)
target_link_libraries(shipheart_api PRIVATE