Question

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

Quelqu'un at-il trouvé de bonnes solutions de rechange qui ne soient pas trop compliquées? le problème?

Était-ce utile?

La solution

consultez SCons . Par exemple, Doom 3 et Blender s’en servent.

Autres conseils

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

http://www.cmake.org/

Il s’agit du système de construction utilisé pour VTK (entre autres), qui est une bibliothèque C ++ avec les plateformes Python, Tcl et Java. 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 outils automatiques 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 autotools est loin d'être le système le plus simple à ce jour.

Certains projets GNOME ont migré vers waf .

Il est basé sur Python, tout comme Scons, mais également de manière autonome. Par conséquent, au lieu d'exiger que les autres développeurs installent votre outil de génération préféré, vous copiez simplement le script de génération autonome dans votre projet.

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 les suivants:

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

  • vous pouvez définir la manière dont une tâche / règle est à jour (pas seulement la vérification des horodatages, les fichiers cible ne sont pas obligatoires)
  • Les
  • dépendances peuvent être calculées dynamiquement par d’autres tâches
  • Les actions de la tâche
  • peuvent être des fonctions python ou des commandes shell

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

Le générateur de fichiers de génération cmake (par exemple pour Unix Makefiles, Visual Studio, XCode, Eclipse CDT, ...) peut également générer des fichiers de construction ninja depuis la version 2.8.8 (avril 2012) et, autant que je sache, ninja est même devenu l'outil de construction par défaut utilisé par cmake .

Il est supposé surperformer l'outil make (meilleur suivi des dépendances et parallélisation également).

cmake est un outil déjà bien établi. Vous pouvez toujours choisir ultérieurement l'outil de construction sans modifier vos fichiers de configuration. Donc, si une meilleure version est développée à l’avenir et sera supportée par cmake , vous pourrez y accéder facilement.

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

J'ai écrit un outil appelé sake , qui a tenté de rendre l'écriture très facile à lire. et écrivez.

Cela dépend en quelque sorte de ce que vous essayez de faire. Si tout vous voulez des dépendances de type fabricant et un appel de commande, alors Make est en fait l'un des meilleurs outils pour la tâche. :-) Le rake est très gentil, mais peut être maladroit pour des cas simples. Ant est bien sûr une ville de verbosité, mais elle supporte mieux la construction de langages de type Java (Scala et Groovy inclus). En outre, Ant est disponible partout . C'est la raison principale pour laquelle je l'utilise. Comme il fonctionne de manière cohérente sous Windows, il est même plus multi-plateforme que Make.

Si vous voulez une gestion de la dépendance 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 (c'est basé sur Rake). Malheureusement, il n’est pas encore aussi omniprésent que Maven.

Je préfère toujours faire après avoir envisagé de nombreuses solutions de rechange. Lorsque vous dépensez automatiquement des dépendances via le compilateur ou quelque chose comme fastdep, il ne reste plus grand chose à faire. En particulier, je ne souhaite pas que mon script de construction soit lié au langage d'implémentation, et je n'aime pas écrire des éléments au format XML lorsque des alternatives plus lisibles sont disponibles. Un outil qui expose un langage général a du mérite, mais pas un autre langage interprété (autant que je sache). Qu'est-ce qui ne va pas avec Make? pourrait intéresser votre point de vue sur s'éloigner de make.

/ Allan

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

Cela semble très prometteur.

Il y a toujours Ant: http://ant.apache.org , ce que je trouve personnellement horrible. Il s’agit toutefois du standard de facto pour le développement Java.

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

Vous recherchez une marque simplifiée? Dans ce cas, vous devez vous adresser à quelqu'un qui connaît très bien make pour créer une série de (M | m) akefiles qui simplifieront votre problème.

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

Dans quelle direction allez-vous influer sur les résultats potentiels d’une telle question?

Fondamentalement, de nouvelles méthodes de construction de systèmes à partir des composants qui ont réellement changé, par opposition à 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 quel chemin vous vouliez descendre.

acclamations,

Rob

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 possède une interface graphique qui affiche le graphique de dépendance avec des zones de code couleur pour les travaux et des ovales pour les fichiers. Lorsque le nombre de tâches et de fichiers augmente, un outil basé sur une interface graphique, tel que FlowTracer, est essentiel.

Le coût de la configuration initiale est supérieur à Make. Il existe une courbe d'apprentissage pour configurer votre premier flux en l'utilisant. Après cela, ça va plus vite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top