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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user