ninja est prévu pour n'être pas écrit à la main mais généré automatiquement. Passer de make à ninja revient donc à configurer une option avec cmake (c'est aussi simple que de passer de gcc à clang en fait !). Évidemment, si tes Makefiles sont fait à la main, c'est "too much" de passer à ninja ;-)
ninja gère automatiquement le bon nombre de processus à lancer : make -j4 sur simple coeur fera perdre des performances. En plus, en cas de Makefile récursif l'argument "-j" fournit initialement par l'utilisateur doit être propagé dans les autres appels ce qui n'est pas commode du tout alors que ça "juste fonctionne" avec ninja
ninja gère mieux les dépendances (typiquement les modifications dans les .h que make ne prend pas en compte sans "gcc-M") et recompile en cas de changements dans les flags
ET SURTOUT : ninja bufferise ta sortie, en cas d'erreur tu n'as pas une chiée de messages dans tous les sens relatif à différents fichiers. En cas d'erreur, il imprime tout seul comme un grand la commande de compilation qui a échouée ainsi que le/les messages d'erreurs
[^] # Re: On peut toujours creuser un trou à mains nues...
Posté par G.bleu (site web personnel) . En réponse au journal Point de vue : un IDE est il un outil de programmation indispensable ?. Évalué à 2.
Je résume donc :
ninja est prévu pour n'être pas écrit à la main mais généré automatiquement. Passer de make à ninja revient donc à configurer une option avec cmake (c'est aussi simple que de passer de gcc à clang en fait !). Évidemment, si tes Makefiles sont fait à la main, c'est "too much" de passer à ninja ;-)
ninja gère automatiquement le bon nombre de processus à lancer : make -j4 sur simple coeur fera perdre des performances. En plus, en cas de Makefile récursif l'argument "-j" fournit initialement par l'utilisateur doit être propagé dans les autres appels ce qui n'est pas commode du tout alors que ça "juste fonctionne" avec ninja
ninja gère mieux les dépendances (typiquement les modifications dans les .h que make ne prend pas en compte sans "gcc-M") et recompile en cas de changements dans les flags
ET SURTOUT : ninja bufferise ta sortie, en cas d'erreur tu n'as pas une chiée de messages dans tous les sens relatif à différents fichiers. En cas d'erreur, il imprime tout seul comme un grand la commande de compilation qui a échouée ainsi que le/les messages d'erreurs