50 lines
1.7 KiB
CMake
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
|
|
)
|