Developpez.com - Rubrique Qt

Le Club des Développeurs et IT Pro

En direct des Qt DevDays 2012

Compte-rendu de la présentation sur les nouveautés à attendre du support de Qt de la part de CMake

Le 2012-11-14 15:25:22, par LittleWhite, Responsable 2D/3D/Jeux
La troisième conférence à laquelle j'ai été portait sur CMake et son utilisation avec Qt.

Pour rappel, CMake est un outil permettant de créer les fichiers du projet afin de compiler ce dernier, comme les Makefile, les fichiers de projet pour Visual Studio ou Xcode. Pour ce faire, CMake recherche les dépendances afin d'ajouter les options de compilation nécessaires, les chemins vers les fichiers d'en-tête et les bibliothèques à inclure.

En réalité, CMake a été développé avec trois autres outils :
  • CPack, pour créer des paquets de l'application ;
  • CTest, pour effectuer des tests unitaires (peut fonctionner avec le système de tests de Qt) ;
  • CDash, un serveur pour afficher les résultats des tests.



Comme le montre la photo ci-dessus, la configuration d'un projet utilisant Qt est assez compliquée (beaucoup plus qu'avec QMake).

La photo ci-dessous montre la configuration pour un projet Qt 5 :


Tout comme Qt, CMake évolue et il est prévu que le fonctionnement de CMake change. Notamment, la méthode pour trouver les dépendances des projets (bibliothèques et fichiers d'en-tête nécessaires) sera grandement améliorée et, courant 2013, les fichiers pour CMake ressembleront à ceci :


La bonne nouvelle, c'est que, comme CMake est indépendant de Qt, ces changements fonctionneront aussi pour Qt 4.

Avec Qt 5, il faudra rajouter la ligne suivante afin de réussir la compilation.
set(CMAKE_POSITION_INDEPENDENT_CODE ON)


Par la même occasion, les problèmes de liaisons des projets utilisant QTestLib seront réglés (autour de janvier avec la sortie de CMake 2.8.11).

De plus, la fonction qt4_wrap_cpp pour appeler moc sur les fichiers cpp ne sera plus nécessaire, car CMake détectera de lui même si le moc est nécessaire directement en examinant les fichiers sources. Par contre, la fonction qt4_wrap_ui sera toujours nécessaire.

Finalement, avec CMake 2.8.10, il sera facilement possible d'ajouter des options aux cibles de compilation avec la syntaxe suivante :
$<$<CONFIG.Debug>:/usr/bin/valgrind>
La variable CONFIG contiendra valgrind uniquement pour la cible Debug (et donc ne sera pas présent en release).

Finalement, pendant le temps libre laissé par KDAB, Stephen Kelly s'est amusé à implémenter des fichiers de configuration CMake avec le langage QML, comme le montre la photo suivante :


(Bien sur, ceci était principalement pour s'amuser et cela ne sera pas intégré à Qt.)

  Discussion forum
14 commentaires
  • froggy25
    Membre à l'essai
    Merci pour ces compte-rendus, bon boulot

    *a de la lecture*