web-dev-qa-db-fra.com

Des alternatives prometteuses à faire?

J'utilise make et makefiles depuis de nombreuses années, et bien que le concept soit sain, la mise en œuvre a quelque chose à désirer.

Quelqu'un a-t-il trouvé de bonnes alternatives pour ne pas compliquer le problème?

73
mike511

consultez SCons . Par exemple, Doom 3 et Blender en font usage.

26
WaldWolf

J'ai beaucoup d'amis qui ne jurent que par CMake pour le développement multiplateforme:

http://www.cmake.org/

C'est le système de construction utilisé pour VTK (entre autres), qui est une bibliothèque C++ avec Python, Tcl et Java bindings. Je pense que c'est probablement la chose la moins compliquée que vous trouverez avec autant de fonctionnalités.

Vous pouvez toujours essayer le standard autotools . Les fichiers Automake sont assez faciles à assembler si vous utilisez uniquement Unix et si vous vous en tenez à C/C++. L'intégration est plus compliquée et les autotools sont loin d'être le système le plus simple de tous les temps.

25
Todd Gamblin

Certains des projets GNOME ont migré vers waf .

Il est basé sur Python, comme Scons, mais également autonome - donc plutôt que d'exiger que d'autres développeurs aient votre outil de construction préféré installé, il vous suffit de copier le script de construction autonome dans votre projet.

15
Eric Talevich

Je recommande d'utiliser Rake . C'est l'outil le plus simple que j'ai trouvé.

D'autres bons outils que j'ai utilisés, si Ruby n'est pas votre truc, sont:

  • AAP (Python)
  • SCons (Python)
  • Ant (Java, config en XML, assez complexe)
12

doit est un outil python. Il est basé sur les concepts de build-tools mais plus générique.

  • vous pouvez définir la mise à jour d'une tâche/règle (pas seulement la vérification des horodatages, les fichiers cibles ne sont pas requis)
  • les dépendances peuvent être calculées dynamiquement par d'autres tâches
  • les actions de la tâche peuvent être python ou commandes Shell
12
schettino72

Soyez conscient de l'outil de construction ninja (v1.8.2 Sept 2017) qui est influencé par tup et redo .

Le générateur de fichiers de construction cmake (par exemple pour les Makefiles Unix, Visual Studio, XCode, Eclipse CDT, ...) peut également générer des fichiers de construction ninja depuis la version 2.8. 8 (avril 2012) et, afaik, ninja est désormais même l'outil de construction par défaut utilisé par cmake.

Il est censé surpasser l'outil make (meilleur suivi des dépendances et est également parallélisé).

cmake est un outil déjà bien établi. Vous pouvez toujours choisir ultérieurement l'outil de génération sans modifier vos fichiers de configuration. Donc, si une meilleure version est développée à l'avenir et sera prise en charge par cmake, vous pouvez y basculer facilement.

Notez que pour c/c ++, l'amélioration du temps de compilation est parfois limitée en raison des en-têtes inclus via le préprocesseur (en particulier lors de l'utilisation de bibliothèques uniquement en-tête, par exemple boost & eigen ) qui nous espérons que cela sera remplacé par la proposition de modules (dans une revue technique de c ++ 11 ou éventuellement en c ++ 1y). Consultez cette présentation pour plus de détails sur ce problème.

5
Hotschke

J'ai écrit un outil appelé sake qui a essayé de rendre l'écriture des choses de type makefile très facile à lire et à écrire.

4
tonyfischetti

Cela dépend en quelque sorte de ce que vous essayez de faire. Si tous vous voulez des dépendances cibles de style make et un appel de commande, Make est en fait l'un des meilleurs outils pour la tâche. :-) Rake est très sympa, mais peut être maladroit pour certains cas simples. Ant est bien sûr une ville de verbosité, mais elle a un meilleur support pour construire des langages de type Java (Scala et Groovy inclus). En outre, Ant est disponible partout. C'est la principale raison pour laquelle je l'utilise. Parce qu'il fonctionne de manière cohérente sur Windows, il est en fait encore plus multiplateforme que Make.

Si vous voulez une gestion des dépendances pour les bibliothèques de type Java, Maven est le choix canonique, mais j'aime beaucoup mieux Buildr. C'est plus rapide et beaucoup plus facile à personnaliser (il est basé sur Rake). Malheureusement, ce n'est pas aussi omniprésent que Maven pour l'instant.

3
Daniel Spiewak

Je préfère toujours faire après avoir considéré un tas d'alternatives. Lorsque vous avez généré automatiquement des dépendances via le compilateur ou quelque chose comme fastdep, il n'y a pas grand-chose à faire. En particulier, je ne veux pas que mon script de construction soit lié au langage d'implémentation, et je n'aime pas écrire des trucs en XML lorsque des alternatives plus lisibles sont disponibles. Un outil qui expose un langage à usage général a du mérite, mais pas un autre langage interprété (afaik). Qu'est-ce qui ne va pas avec Make? pourrait faire appel à votre point de vue sur le fait de s'éloigner de make.

/ Allan

2
Allan Wind

Le système de création de Ruby est appelé rake: http://rake.rubyforge.org/

Semble assez prometteur.

Il y a toujours Ant: http://ant.Apache.org , que je trouve personnellement horrible. C'est la norme de facto pour le développement Java, cependant.

1
davetron5000

Je ne sais pas si vous posez la bonne question ici.

Vous recherchez une marque simplifiée? Dans ce cas, vous devez demander à quelqu'un qui est très familier avec make de créer une série de fichiers (M | m) qui simplifieront votre problème.

Ou souhaitez-vous examiner la technologie sous-jacente? Voulons-nous appliquer une architecture de type conception par contrat qui est intégrée et appliquée dans la conception du code? Ou éventuellement, la langue elle-même, par exemple Ada et son concept de spécifications (interfaces) et de corps (implémentations)?

Quelle direction vous suivez affectera certainement les résultats potentiels d'une telle question?

Fondamentalement, de nouvelles façons de construire des systèmes à partir uniquement des composants qui ont vraiment changé par rapport à l'adoption de nouvelles technologies intégrant de tels mécanismes par conception.

Désolé, ce n'est pas une réponse directe. Je voulais juste essayer de vous faire évaluer le chemin que vous vouliez emprunter.

à votre santé,

Rob

0
Rob Wells

FlowTracer de RTDA est un autre bon choix que j'ai vu utilisé commercialement dans un environnement à grande échelle (des dizaines de milliers d'emplois): http://www.rtda.com/flowtracer-design-flow-infrastructure-software

Il a une interface graphique qui montre le graphique de dépendance avec des cases à code couleur pour les travaux et des ovales pour les fichiers. Lorsque le nombre de travaux et de fichiers devient élevé, un outil basé sur une interface graphique comme FlowTracer est à peu près essentiel.

Le coût d'installation initial est supérieur à Make. Il existe une courbe d'apprentissage pour configurer votre premier flux en l'utilisant. Après cela, cela devient plus rapide.

0
bu11d0zer