Différence entre utiliser Makefile et cmake pour comstackr le code

Je code sur C / C ++ et utilise Makefile (GNU) pour comstackr le code. Je peux faire la même chose avec cmake et obtenir un MakeFile. Cependant, je ne comprends pas quelle est la différence entre utiliser Makefile et cmake pour comstackr le code.

Make (ou plutôt un Makefile) est un buildsystem – il pilote le compilateur et les autres outils de génération pour créer votre code.

CMake est un générateur de buildsystems. Il peut produire des fichiers Makefiles, produire des fichiers de construction Ninja, produire des projets KDEvelop ou XCode, produire des solutions Visual Studio. A partir du même sharepoint départ, le même fichier CMakeLists.txt. Donc, si vous avez un projet indépendant de la plate-forme, CMake est également un moyen de le rendre indépendant du système de compilation.

Si les développeurs Windows sont habitués aux développeurs Visual Studio et Unix qui ne jurent que par GNU Make, CMake est l’un des moyens de le faire.

Je recommande toujours d’utiliser CMake (ou un autre générateur de buildsystem, mais CMake est ma préférence personnelle) si vous souhaitez que votre projet soit multi-plateforme ou largement utilisable. CMake fournit également quelques fonctionnalités intéressantes telles que la détection des dépendances, la gestion des interfaces de bibliothèque ou l’intégration avec CTest, CDash et CPack.

L’utilisation d’un générateur buildsystem rend votre projet plus durable. Même si vous êtes GNU-Make-only maintenant, que se passera-t-il si vous décidez plus tard d’étendre à d’autres plates-formes (que ce soit Windows ou quelque chose d’incorporé), ou que vous souhaitiez simplement utiliser un IDE?