131 lines
4.9 KiB
CMake
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.
|