Des alternatives prometteuses à faire?

J’utilise le make et les makefiles depuis de nombreuses années et, bien que le concept soit solide, l’implémentation a quelque chose à désirer.

Quelqu’un at-il trouvé de bonnes alternatives pour ne pas compliquer le problème?

Découvrez les SCons . Par exemple, Doom 3 et Blender en font usage.

J’ai beaucoup d’amis qui ne jurent que par CMake pour un développement multi-plateforme:

http://www.cmake.org/

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

Vous pouvez toujours essayer les autotools standard. 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 les plus simples.

Certains projets GNOME ont migré vers waf .

C’est basé sur Python, comme Scons, mais aussi autonome – plutôt que de demander aux autres développeurs d’avoir votre outil de construction préféré installé, il vous suffit de copier le script de construction autonome dans votre projet.

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

  • Vous pouvez définir la façon dont une tâche / règle est à jour (pas seulement la vérification des horodatages, les fichiers cibles ne sont pas requirejs)
  • les dépendances peuvent être calculées dynamicment par d’autres tâches
  • les actions de la tâche peuvent être des fonctions python ou des commandes shell

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, cependant, si Ruby n’est pas votre truc, sont:

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

J’ai écrit un outil appelé sake qui essayait de rendre l’écriture facile à lire et à écrire.

Soyez conscient de l’outil de compilation ninja (v1.8.2 sept 2017) qui est influencé par tup et redo .

Le générateur de fichier de compilation cmake (par exemple pour les Makefiles Unix, Visual Studio, XCode, Eclipse CDT, …) peut également générer ninja fichiers de construction ninja depuis la version 2.8.8 (avril 2012) et, même si le ninja est désormais l’outil de compilation par défaut utilisé par cmake .

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

cmake est un outil déjà bien établi. Vous pouvez toujours choisir plus tard l’outil de compilation sans modifier vos fichiers de configuration. Donc, si une meilleure version est développée dans le futur et sera prise en charge par cmake vous pourrez y accéder facilement.

Notez que pour c / c ++, l’amélioration du temps de compilation est parfois limitée en raison des en-têtes inclus dans le préprocesseur (en particulier lors de l’utilisation de librairies d’en-tête, par exemple boost & eigen ) qui seront remplacées par la proposition de modules de c ++ 11 ou éventuellement en c ++ 1y). Consultez cette présentation pour plus de détails sur ce problème.

Cela dépend en quelque sorte de ce que vous essayez de faire. Si tout ce que vous voulez, ce sont les dépendances de cible et l’appel de commandes, alors Make est en fait l’un des meilleurs outils pour cette tâche. 🙂 Rake est très gentil, mais peut être maladroit pour certains cas simples. Ant est bien sur verbosity city, mais il a un meilleur support pour la construction de langages de type Java (Scala et Groovy inclus). De plus, Ant est disponible partout . C’est la raison principale pour laquelle je l’utilise. Parce qu’il fonctionne de manière cohérente sous Windows, il est en fait encore plus multi-plateforme que Make.

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

Je préfère encore faire après avoir considéré un tas d’alternatives. Lorsque vous générez automatiquement des dépendances via le compilateur ou quelque chose comme fastdep, il ne rest plus grand chose à faire. En particulier, je ne veux pas que mon script de compilation 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 généraliste a du mérite, mais un autre langage interprété ne le fait pas. Qu’est-ce qui ne va pas avec Make? peut faire appel à votre sharepoint vue sur l’abandon de la marque.

/ Allan

Le système de fabrication de Ruby s’appelle rake: http://rake.rubyforge.org/

Semble très 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.

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

Êtes-vous après une fabrication simplifiée? Dans ce cas, vous devez faire appel à quelqu’un qui connaît très bien make pour créer une série de fichiers (M | m) qui simplifieront votre problème.

Ou voulez-vous regarder la technologie sous-jacente? Voulons-nous appliquer une architecture de type conception par contrat intégrée à la conception du code? Ou éventuellement, le langage lui-même, par exemple Ada et son concept de spécifications (interfaces) et de corps (implémentations)?

Quelle direction vous recherchez va certainement affecter les résultats potentiels d’une telle question?

Fondamentalement, de nouvelles façons de construire des systèmes à partir des seuls composants qui ont réellement changé par rapport à l’adoption de nouvelles technologies intégrant de tels mécanismes.

Désolé ce n’est pas une réponse directe. Je voulais juste essayer de vous faire évaluer le chemin que vous voulez suivre.

à votre santé,

Rob

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

Il dispose d’une interface graphique qui affiche le graphique de dépendance avec des zones de couleur pour les travaux et les ovales pour les fichiers. Lorsque le nombre de tâches et de fichiers augmente, un outil basé sur une interface graphique comme FlowTracer est essentiel.

Le coût d’installation initial est supérieur à celui de Make. Il y a une courbe d’apprentissage pour configurer votre premier stream en l’utilisant. Après cela, ça devient plus rapide.