Files

131 lines
4.9 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(shipheart_cm5 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
find_package(Qt6 REQUIRED COMPONENTS
Quick
VirtualKeyboard
Qml
Sql
QuickControls2
Charts
LinguistTools
)
set_target_properties(Qt6::lrelease PROPERTIES
IMPORTED_LOCATION /usr/local/bin/lrelease-host
IMPORTED_LOCATION_RELEASE /usr/local/bin/lrelease-host
IMPORTED_LOCATION_NONE /usr/local/bin/lrelease-host
)
# ---------------------------------------------------------------------------
# Version dynamique, injectée dans _version.h à CHAQUE build (pas seulement
# à chaque reconfiguration CMake), au même format que le .pro d'origine
# (yymmdd_HHMMSS, ex: 260807_133409) et avec la même garantie : deux
# exécutables différents obtiennent toujours un horodatage différent.
#
# Mécanisme : une cible personnalisée sans suivi de fichier (add_custom_target
# ... ALL, sans dépendance de fichier source) est donc 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.
#
# NB IMPORTANT - modification de main.cpp nécessaire : ce mécanisme régénère
# le fichier source _version.h - il faut donc que main.cpp fasse
# #include "_version.h"
# (actuellement absent : VERSION n'y est utilisé que comme macro fournie par
# le compilateur). Cet ajout est neutre pour la compilation CM4/qmake (qui
# continue de fournir VERSION via DEFINES +=, sans jamais regénérer ni lire
# le contenu de _version.h).
# ---------------------------------------------------------------------------
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_qt
backend.cpp
bdd.cpp
main.cpp
systeme.cpp
tb_mesures.cpp
# Headers listés pour visibilité dans l'IDE (non obligatoire pour la compilation) :
_version.h
backend.h
bdd.h
shipheart.h
systeme.h
tb_mesures.h
# Ressources :
qml.qrc
traductions.qrc
)
add_dependencies(shipheart_qt generate_version)
target_link_libraries(shipheart_qt PRIVATE
Qt6::Quick
Qt6::VirtualKeyboard
Qt6::Qml
Qt6::Sql
Qt6::QuickControls2
Qt6::Charts
)
# ---------------------------------------------------------------------------
# Traductions (équivalent de TRANSLATIONS + lupdate/lrelease du .pro)
# ---------------------------------------------------------------------------
set(QT_LRELEASE_EXECUTABLE /usr/local/bin/lrelease-host)
set(TS_FILES
shipheart_fr_FR.ts
shipheart_en_EN.ts
shipheart_de_DE.ts
shipheart_es_ES.ts
shipheart_pt_PT.ts
shipheart_nl_NL.ts
shipheart_it_IT.ts
shipheart_lv_LV.ts
shipheart_ca_ES.ts
)
qt_add_translations(shipheart_qt TS_FILES ${TS_FILES})
# ---------------------------------------------------------------------------
# Dispositions de clavier virtuel personnalisées (virtualkeyboard_layouts_koriolan)
#
# RÉSOLU : ces fichiers sont déjà intégralement référencés dans qml.qrc
# (confirmé), et chargés au runtime via une ressource Qt embarquée
# (qputenv("QT_VIRTUALKEYBOARD_LAYOUT_PATH", ":/virtualkeyboard_layouts_koriolan/layouts")
# dans main.cpp). Rien à ajouter ici : qml.qrc est déjà dans la liste des
# sources de add_executable() ci-dessus, donc ces fichiers sont embarqués
# dans le binaire comme sur CM4.
#
# Dette technique notée pour plus tard (hors scope de ce portage) : la
# duplication complète de tous les layouts Qt (toutes langues, tous modes)
# pour la seule modification d'une touche (Espace -> Moins) dans
# fallback/digits.qml est disproportionnée. Une solution plus ciblée
# existe probablement (héritage partiel des layouts standards), à explorer
# séparément - à tester sur CM4 ET CM5 si entreprise, code source commun.
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------
# Installation (équivalent target.path du .pro)
# ---------------------------------------------------------------------------
install(TARGETS shipheart_qt
DESTINATION /home/koriolan/shipheart/versions/current
)
# NB : le mécanisme QMAKE_POST_LINK du .pro d'origine copiait l'exécutable
# vers un chemin LOCAL à l'ancien poste de développement Ubuntu
# (/home/koriolan/SharePoint_Koriolan_Documents/...) - obsolète dans le
# nouveau contexte (compilation croisée WSL2 + déploiement SSH piloté par
# Qt Creator). Non repris ici ; à remplacer, si un historique des versions
# compilées est toujours souhaité, par un mécanisme côté CM5 ou côté WSL2,
# à définir séparément.