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.