cmake_minimum_required(VERSION 3.16) project(shipheart_api LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) 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=$ -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 Qt6::Core Qt6::HttpServer Qt6::Sql ) install(TARGETS shipheart_api DESTINATION /home/koriolan/shipheart/versions/current )