Quelles sont les différences et les similitudes entre les CMake et qmake?
Je voudrais savoir raisons pour utiliser CMake pour un projet particulier, en plus de qmake et vice versa.
Simplement quels sont les avantages et les inconvénients des deux systèmes de construction? J'ai cherché et trouvé quelques documents, mais se sentir difficile à comprendre.
- Depuis, les gens gardent l'éducation de Qt Creator comme une IDE, je vais mentionner que CLion est une excellente IDE pour CMake des projets basés sur Mac et Linux. Sur Windows, je préfère Visual Studio au cours de CLion. CLion peut être gratuit pour les projets open source; Visual Studio Community edition est gratuit, sans aucune restriction.
Vous devez vous connecter pour publier un commentaire.
Les deux sont de construire des systèmes, mais ils ne sont pas très similaire à tous. Si votre projet utilise Qt, vous êtes probablement mieux de l'aide de qmake. CMake est plus générique, et s'adapte assez bien à tout type de projet.
Les deux qmake et CMake générer un Makefile, qui est lu par
make
pour construire le projet. Pas tous construire des systèmes de générer un Makefile, mais beaucoup le font. Même un Makefile est un type de système de construction; il indique au compilateur et l'éditeur de liens quoi faire, afin de créer un fichier exécutable (ou dynamique ou statique de la bibliothèque).Si votre projet utilise Qt, mais vous ne voulez pas utiliser qmake, vous aurez à faire un peu plus de choses de vous-même:
Ainsi, vous aurez à faire un peu plus de travail pour construire un projet Qt sans qmake, mais il est possible et il vous apprendra beaucoup sur la façon dont l'intervalle Qt et de qmake faire les choses.
Sur une note personnelle (prenez ce que comme une recommandation, de faire d'autres recherches vous-même): je ne suis pas un grand fan de qmake. Il vous aide à la Qt de trucs, mais en dehors de cela, j'ai trouvé ça assez limité.
En tout cas, je vous recommande d'apprendre à construire un projet de petite taille (~10 fichiers source) sans l'aide de n'importe quel type de système de construction. Ne pas utiliser CMake, non pas avec un Makefile, juste en utilisant le compilateur et l'éditeur de liens directement. Vous ne devriez pas réellement construire tout projet, de cette façon, mais vous devez apprendre comment le faire, juste pour savoir ce que à construire des systèmes réellement faire. Sachant ce qu'ils font va rendre beaucoup plus facile à utiliser.
Il y A quelques mois, nous sommes passés à un projet de qmake pour Premake, qui vaut également le détour. C'est très scriptable (avec Lua), ce qui est idéal lorsque vous avez besoin pour personnaliser votre processus de création.
Cela dit, il est un peu plus "manuel", alors préparez-vous à apprendre la compilation et la liaison fonctionne à un niveau plus élémentaire, sans l'utilisation d'un système de construction. C'est aussi en version bêta (Premake 5), donc il y a des morceaux toujours portées disparues.
Vous pouvez aussi jeter un oeil à qbs, qui est censé être une meilleure qmake. C'est encore une version beta, donc j'attendrais alors qu'il arrive à maturité et devient plus facile à utiliser.
CMake est de loin le plus puissant système de construction. La syntaxe est "pas très agréable", pour employer un euphémisme. Mais alors, pour tout projet complexe, ce que l'on a à faire avec QMake (ou tout buildsystem je connais) à réaliser des choses n'est pas agréable non plus. Pour des projets simples, QMake est plus agréable à regarder même si.
Si vous avez besoin de configurer des vérifications par une tierce partie des dépendances autres que Qt, CMake est ce que vous voulez, le soutien pour configurer les contrôles dans QMake est minime, voire inexistante.
QMake sur l'autre main fonctionne très bien avec Qt Creator (CMake soutien en manque, même si c'est faisable d'utiliser CMake avec le Créateur).
Si vous voulez construire et déployer des applications pour iOS et Android à partir de l'intérieur de l'intervalle Qt Creator, je vous suggère fortement de QMake. (Je ne sais pas si c'est encore possible de nos jours avec CMake - il sera certainement causer beaucoup plus de maux de tête).
J'utilise CMake pour mes projets Qt et je suis très heureux avec elle. Plus précisément, j'ai la suite dans ma CMakeLists.txt:
J'espère que cela aide si vous décidez d'aller avec CMake.
make install
commande à l'aide de qt?CMake
va vous aider à générer des fichiers de configuration pour de nombreux systèmes de construction (un "système de construction" est appelé Générateurs deCMake
). Voir Qu'est ce qu'un CMake générateur?.Cela signifie que si vous avez un ensemble de C/C++ sources et bien écrit
CMakeLists.txt
, vous pouvez utiliser CMake pour créer des projets pour différents système de build (IDE, basé sur la ligne de commande), tels que Visual Studio, CodeBlocks, g++...Avec CMake, vous pouvez choisir l'IDE et le compilateur que vous utilisez dans la fin et "facilement" basculer entre les prises en charge.
qmake
, autant que je sache, ne soutiendra que QtCreator comme un IDE (itleft à l'aide de la 3ème partie du compilateur dans le fond: nmake à partir de Visual Studio, g++, MinGW...). Mais vous n'avez pas de générer une solution Visual Studio (sln fichier) à l'aide deqmake
. C'est la principale limite que je vois dans qmake (parce que je déteste QtCreator...Visual Studio est beaucoup plus puissant et intuitif...mais c'est juste mon avis).C'est vrai
qmake
rend plus facile à compiler Qt-based applications (car MOC .l'interface utilisateur et de goût pour Qt est pris en charge nativement) queCMake
. Mais c'est faisable de toute façon à l'aide deCMake
(il y a des fonctions intégrées de l'intervalle Qt de l'intégration). Seulement votre CMakeLists.txt peut-être retravaillé un peu lors du passage à de nouvelles versions de Qt (j'ai eu un moment difficile lors du passage de Qt4 pour Qt5, je suppose que l'utilisation deqmake
rend cela plus facile).Personnellement, j'utilise
CMake
pour mon environnement de construction et, quand j'ai besoin d'utiliser QtCreator (pour Android déploiement principalement), je fais mesCMake
scripts génèrent une .pro fichier qmake/QtCreator. Cela fonctionne bien carqmake
.pro syntaxe du fichier est très simple. Alors je ne suis pas verrouillé à un IDE.qmake
CMake
Ma recommandation: Utiliser qmake en cas QtCreator est votre IDE et commence avec Qt ou C++. Utiliser cmake dans le cas où vous voulez faire des trucs compliqués dans votre construction.
Les deux qmake et CMake travail de même. Voir http://www.th-thielemann.de/development/cmake/cmake_qmake_to_cmake.html pour un tutoriel pour migrer de qmake à CMake.