tout bon outil pour la génération de fichiers Makefile?

Je recherche un outil capable de générer un fichier Make pour un projet C / C ++ pour différents compilateurs (gcc, microsoft vc ++, borland etc.) et différentes plates-formes (Win, Linux, Mac).

Autres suggestions à considérer:

  • Scons est une bibliothèque de compilation multi-plateforme, multi-compilateur, utilisant Python scruipting pour les systèmes de construction. Utilisé dans une variété de grands projets, et fonctionne très bien.

  • Si vous utilisez Qt, QMake est également un bon système de construction.

  • CMake est aussi très mignon.

  • Enfin, si tout échoue …

Avez-vous essayé Automatic Makefile Generator ?

Il prend en charge les compilateurs suivants:

  Borland 3.1 
 Borland 5.0 
 Borland 5.0, 16 bits 
 Borland 5.5 
 Borland 5.6 
 Borland 5.8 
 CC 
 Gnu g ++ 
 Gnu g ++, bibliothèque dynamic 
 Intel 5, 6, 7 pour Linux 
 Intel 5, 6, 7 pour Linux, bibliothèque dynamic 
 Intel 5, 6, 7 pour Windows 
 Intel 8,9,10 pour Linux 
 Intel 8,9,10 pour Linux, bibliothèque dynamic 
 Intel 8,9 pour windows 
 Intel 10 pour Windows 
 Visual C ++ 5 
 Visual C ++ 6, 7, 7.1 
 Visual C ++ 8 
 Watcom ouvert 
 Watcom 10A 
 Watcom 10A, 16 bits 

J’ai déjà utilisé Bakefile avec un certain succès. C’est assez simple et semble bien fonctionner.

CMake est le seul outil capable de générer de véritables projets Visual Studio (pas de projets “Makefile” faisant appel à un outil externe) et de recréer automatiquement les projets lorsque le fichier de construction (CMakeLists.txt) change.

Les problèmes de performance des SCons sont bien connus et un sujet largement débattu sur les listes de diffusion SCons.

Je voterais pour OMake . Il corrige toutes les plaintes que j’ai eu avec GNU make:

  • c’est un langage à part entière.
  • utilise MD5 au lieu des horodatages.
  • fournit un shell minimal qui implémente les commandes unix les plus utiles sur toutes les plates-formes: find, sed, awk, etc …
  • fonctionne avec les noms de chemin unix ou dos.
  • largement documenté.
  • prend en charge les builds parallèles.
  • vite.

La génération automatique de fichiers (M | m) akefiles m’inquiète de ce que vous essayez de faire ici.

Comprenez-vous ce qui se passe sous les couvertures lorsque vous tapez make? Ou gmake? Je vous demande seulement parce que si vous ne le faites pas quand les choses ne fonctionnent pas, comme si de nouveaux changements de code n’étaient pas incorporés dans la version, vous aurez du mal à essayer de faire ce qui est arrivé.

Pour commencer à comprendre, est-ce que je peux suggérer de lire ” Gérer des projets avec GNU Make ” de Robert Mecklenberg. Les premiers chapitres couvrent le fonctionnement de make. Faire entendre votre voix sur le fait que le chaînage en arrière est l’une des choses les plus importantes que vous puissiez faire.

Si vous ne le faites pas et que votre système semble fonctionner, alors vous utiliserez le terme ” Programmation par coïncidence ” de The Pragmatic Programmers. (-:

BTW Grands articles disponibles sur leur site! Et je ne suis pas impliqué avec eux. YMMV. Yada-yada …

Je vais aussi seconder CMake. Je l’utilise depuis un certain temps sur un projet multi-plateforme et j’en suis très satisfait.

Un problème à prendre en compte est le suivant: voulez-vous un créateur “makefile” ou un système de build de remplacement? Le problème avec les systèmes de génération de remplacement est que vous n’obtenez généralement pas une bonne intégration IDE pour les plates-formes dont les utilisateurs attendent ceci (Visual C ++). Si vous voulez un créateur de fichier makefile au lieu d’un système de build de remplacement, jetez un coup d’œil à MPC . C’est gratuit et open source.

Waf est un ajout récent à la liste des remplacements de make. Par expérience personnelle, SCONS fait le travail assez bien.

Je ne sais pas si vous avez plus d’intérêt sur cette question. Je travaille sur une projection similaire à un générateur automatique Makefile appelée CodeMate , développée en utilisant Ruby. Peut-être que ce n’est pas la maturité pour les grandes applications en ce moment, mais je vais continuer à y travailler pour l’améliorer. Les utilisateurs ne devraient pas avoir besoin de modifier un fichier de configuration pour créer le logiciel, ou du moins il est supposé l’être. La courbe d’apprentissage doit être minimisée.