Logs
Consultez les logs.
OK
Liste des données
Consultez la liste des données.
OK
Loading...
Formulaire
Saisissez vos données.
Enregistrer
Annuler

Apprendre CMake

Vues
156

Introduction


C++ est un langage de programmation orientée objet. Il offre la possibilité d'avoir le contrôle total sur la gestion de la mémoire.


### Travailler avec CMake


CMake est un outil de construction prenant en charge la construction de projet C++.


Définir un symbole de préprocesseur sous CMake


Un symbole de préprocesseur est utilisé par le préprocesseur pour déterminer les portions de codes à exécuter en fonction des options de compilation. Il est défini avec l'instruction (add_definitions).

// CMakeLists.txt (Définir un symbole de préprocesseur)
...
cmake_minimum_required(VERSION 3.10.0)
project(rdvcpp VERSION 0.1.0 LANGUAGES C CXX)
add_definitions(-DDEBUG_ON)
add_executable(rdvcpp main.cpp)
...


Configurer un fichier d'entête précompilé sous CMake


Un fichier d'en-tête précompilé est un gestionnaire de fichiers d'en-tête stables. Il permet de rassembler tous les fichiers d'en-tête stables dans un seul fichier précompilé afin d'accélérer le processus de compilation du projet. Il est recommandé d'inclure tous les fichiers d'en-tête des librairies standards dans le fichier d'en-tête précompilé.

// CMakeLists.txt (Configurer un fichier d'entête précompilé)
...
cmake_minimum_required(VERSION 3.10.0)
project(rdvcpp VERSION 0.1.0 LANGUAGES C CXX)
set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON)
add_executable(rdvcpp main.cpp)
target_precompile_headers(rdvcpp PRIVATE rdv_pch.h)
...

// Notes.txt (Configurer un fichier d'entête précompilé)
...
# Cela génère le fichier (.obj) > build\[nom-projet].dir\Debug\cmake_pch.obj
# Cela génère le fichier (.pch) > build\[nom-projet].dir\Debug\cmake_pch.pch
...


Configurer les sources d'un module sous CMake


Un module est un concept de la programmation modulaire et réutilisable. Il permet de rassembler dans un fichier séparé un ensemble des fonctionnalités réutilisable.

// CMakeLists.txt (Configurer les sources d'un module)
...
cmake_minimum_required(VERSION 3.10.0)
project(rdvcpp VERSION 0.1.0 LANGUAGES C CXX)
add_executable(rdvcpp
    main.cpp
    rdv_hello.cpp
)
...


Ajouter le répertoire de build CMake au headers sous CMake


Lors de la construction de certains projets C++, des fichiers headers sont générés automatiquement dans le répertoire de build CMake et sont inclus dans les fichiers sources du projet. Pour pouvoir les indexés, il est nécessaire de rajouter le répertoire de build CMake aux chemins de recherche des fichiers headers.

// CMakeLists.txt (Ajouter le répertoire de build CMake au headers)
...
set(CMAKE_INCLUDE_CURRENT_DIR ON)
...


### Travailler avec Qt


Qt est un gestionnaire d'interfaces homme-machine supporté par CMake. Il permet de créer des interfaces homme-machine multiplateformes bureau ou mobile sans changer la base de code.


Configurer un projet Qt sous CMake


La configuration de Qt sous CMake consiste à autoriser la traduction des fichiers ressources (.qrc) avec l'outil (RCC), à autoriser la traduction du mécanisme des connexions (Signal/Slot) avec l'outil (MOC), à autoriser la traduction des fichiers d'interface utilisateur (.ui) avec l'outil (UIC) et à configurer l'édition des liens des modules Qt utilisés par le projet.

// CMakeLists.txt (Configurer un projet Qt)
...
cmake_minimum_required(VERSION 3.10.0)
project(rdvcpp VERSION 0.1.0 LANGUAGES C CXX)

set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_PREFIX_PATH "C:/Qt/6.5.2/msvc2019_64/lib/cmake")

find_package(Qt6 REQUIRED COMPONENTS
    Widgets
)

add_executable(rdvcpp main.cpp)

target_link_libraries (rdvcpp
    Qt6::Widgets
)
...


Configurer une ressource Qt sous CMake


CMake permet de configurer une ressource Qt.

// CMakeLists.txt (Configurer une ressource Qt)
...
add_executable(rdvcpp
    main.cpp
    resources.qrc
)
...


Configurer une interface utilisateur Qt sous CMake


CMake permet de configurer une interface utilisateur Qt.

// CMakeLists.txt (Configurer une interface utilisateur Qt)
...
qt_wrap_ui(UI_FILES
    cMainWindow.ui
)

add_executable(rdvcpp
    main.cpp
    cMainWindow.cpp
    resources.qrc
    ${UI_FILES}
)
...