Différence entre L'utilisation de Makefile et cmake pour compiler le code

Je code sur C / C++ et utilise (GNU)Makefile pour compiler 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 L'utilisation de Makefile et cmake pour compiler le code.

171
demandé sur Raedwald 2014-09-11 18:07:47

1 réponses

(ou plutôt un Makefile) est un buildsystem - il conduit le compilateur et d'autres outils de construction pour construire votre code.

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

Si vous que les développeurs Windows aient l'habitude des développeurs Visual Studio et Unix qui ne jurent que par GNU Make, CMake est (l'un des) Chemin(s) à parcourir.

Je recommanderais toujours D'utiliser CMake (ou un autre générateur de buildsystem, mais CMake est ma préférence personnelle) si vous avez l'intention que votre projet soit multi-plateforme ou Largement utilisable. CMake lui-même fournit également des fonctionnalités intéressantes comme la détection des dépendances, la gestion de l'interface de bibliothèque ou l'intégration avec CTest, CDash et CPack.

Utilisation d'un générateur buildsystem rend votre projet plus pérenne. Même si vous êtes GNU-Make-only maintenant, que se passe-t-il si vous décidez plus tard de vous étendre à d'autres plates-formes (que ce soit Windows ou quelque chose d'embarqué), ou si vous voulez simplement utiliser un IDE?

256
répondu Angew 2014-09-11 14:24:51