Files
shipheart-api/CMakeLists.txt
T

50 lines
1.7 KiB
CMake

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=$<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
Qt6::Core
Qt6::HttpServer
Qt6::Sql
)
install(TARGETS shipheart_api
DESTINATION /home/koriolan/shipheart/versions/current
)