12 juin 2022

Qt & CMake : Add New File impossible !

Quand on crée un nouveau projet avec Qt on a le choix entre utiliser qmake, CMake ou Qbs comme gestionnaire de Build.

Qbs est déprécié depuis fin 2018, et devait disparaître avant 2020, mais en 2022 il est toujours disponible dans Qt 6 !

qmake et CMake sont donc les seuls à prendre en considérations. Malheureusement l’intégration dans Qt Designer n'est pas la même. malgré les promesses faites à l’annonce de la fin de Qbs:

Support for qmake will continue unaffected
Support for CMake will improve
Longer term, we plan to switch to CMake for building Qt itself
CMake support in Qt Creator will be further improved

En pratique, la syntaxe de CMake s'avère être trop compliquée à analyser et certaines fonctions nécessitant de modifier le fichier CMake ne sont pas active dans Qt Designer quand CMake est le gestionnaire de build.
Note: Celui qui affirme ça, Tobias Hunger, était l'un des principaux développeur de Qt Designer, et en particulier du build, de 2009 à 2020 (date du COVID et de son départ de Qt).

Exemple concret:

Une fois un projet créé avec  CMake (PRJ1_CM dans les copies d'écran ci dessous) il n'est pas possible d'utiliser les fonctions "Add Existing Files", "Add Existing Directory" et "Add Library". Alors que cela est possible avec qmake (PRJ2_QM dans les copies d’écrans), et même avec Qbs.

 

 PRJ1_CM utilise CMake

Un click bouton droit sur le nom du projet montre que les fonction "Add Existing Files / Directory / Library"  sont inactives (grisées)

 

 

 

 


 

 



 

 PRJ2_QM utilise qmake.

Tout fonctionne très bien avec qmake.

(avec Qbs aussi)

 

 

 

 

 

 

 

 

 

Vous noterez que même les icônes dans l’arborescence des projets CMake/qmake ne sont pas les mêmes. Les fichiers .ui (très important dans le développement d'un interface graphique) ne sont pas mis dans un groupe "Forms" spécifique comme c'est le cas avec qmake.

En résumé: tout dans le premier lien donné plus haut est faux; Qbs est toujours là et CMake n'est toujours pas mieux supporté.

Notes: Copies d’écran faite en juin 2022 avec Qt LTS 6.2.3 et Qt Designer 7.0.2