Domanda

Sto cercando uno strumento che può generare makefile per un progetto C/C++ per diversi compilatori gcc, microsoft vc++, borland, ecc) e le diverse piattaforme (Win, Linux, Mac).

È stato utile?

Soluzione

Altri suggerimenti che si potrebbe desiderare di prendere in considerazione:

  • Scons è un cross-platform e cross-compilatore costruire libreria, utilizza Python scruipting per la realizzazione di sistemi.Utilizzato in una varietà di progetti di grandi dimensioni, e si comporta molto bene.

  • Se si sta utilizzando Qt, QMake è un bel sistema di generazione di troppo.

  • CMake è anche abbastanza dolce.

  • Infine, Se tutto il resto fallisce...

Altri suggerimenti

Hai provato Automatico Makefile Generatore?

Essa sostiene per i compilatori riportato di seguito:

Borland 3.1 
Borland 5.0 
Borland 5.0, 16 bit 
Borland 5.5 
Borland 5.6 
Borland 5.8 
CC 
Gnu g++ 
Gnu g++, dynamic library 
Intel 5, 6, 7 for Linux 
Intel 5, 6, 7 for Linux, dynamic library 
Intel 5, 6, 7 for windows 
Intel 8,9,10 for Linux 
Intel 8,9,10 for Linux, dynamic library 
Intel 8,9 for windows 
Intel 10 for windows 
Visual C++ 5 
Visual C++ 6, 7, 7.1 
Visual C++ 8 
Open Watcom 
Watcom 10A 
Watcom 10A, 16 bit 

Ho usato Bakefile prima con un certo successo.E ' abbastanza semplice e sembra funzionare bene.

CMake è l'unico strumento che può effettivamente generare reali progetti di Visual Studio (es.non "Makefile"-progetti che chiamare uno strumento esterno), e che ricrea automaticamente i progetti, quando la generazione del file di ingresso CMakeLists.txt a) cambiamenti.

SCons problemi di prestazioni sono ben noti, e un thorougly dibattuto argomento sul SCons mailing list.

Io voterei per OMake.Esso consente di correggere tutte le lamentele che ho avuto con GNU make:

  • e ' una vera e propria lingua.
  • utilizza MD5 invece di timestamp.
  • fornisce un minimo di shell che implementa il più utile dei comandi unix su tutte le piattaforme:trovare, sed, awk, ecc...
  • funziona con unix o dos stile percorsi.
  • ampiamente documentato.
  • supporta parallelo costruisce.
  • veloce.

Generazione automatica di (M|m)akefiles mi fa preoccupare di quello che stai cercando di fare qui.

Hai capito quello che accade sotto le coperte quando si digita fare?O gmake?Sto solo chiedendo, perché se non quando le cose si rompono, come le nuove modifiche al codice non essere incorporati nel costruire, avrai difficoltà, cercando di lavorare con ciò che è accaduto.

Per cominciare a capire fare, posso suggerire di avere una lettura di "Gestione di Progetti con GNU Make"da Robert Mecklenberg.I primi capitoli di copertura come fare il lavoro.Ottenere il vostro sentito in giro il fatto che fare è backward chaining è uno dei più grandi cose che si possono fare.

Se non, e il sistema sembra funzionare, allora sarete, per utilizzare Il Pragmatico Programmatori termine, "programmazione per caso". (-:

BTW Grande articoli disponibili presso il loro sito!E io non sono coinvolti con loro.YMMV.Bla-bla...

Io anche secondo CMake.L'ho usata per un bel po ' su un multi-piattaforma di progetto e sono molto soddisfatto.

Un problema da considerare è se si desidera un "makefile" creatore o una sostituzione del sistema di generazione?Il problema con la sostituzione dei sistemi integrati che in genere non si ottiene un buon IDE per l'integrazione di piattaforme di cui gli utenti si aspettano che questo (Visual C++).Se volete un makefile creatore invece di una sostituzione del sistema di generazione, dare un'occhiata a MPC.E ' gratuito ed open source.

Una recente aggiunta alla lista di effettuare sostituzioni è waf.Per esperienza personale SCONS fa il suo lavoro abbastanza bene.

Non so se avete interesse su questa questione più.Sto lavorando su un simile Makefile generatore automatico di proiezione chiamato CodeMate, sviluppato utilizzando Ruby.Forse non è maturo per applicazioni di grandi dimensioni, ma continuerò a lavorare su di esso per renderlo migliore.Gli utenti non dovrebbero necessità di modificare qualsiasi file di configurazione per creare il software, o almeno si suppone di essere.La curva di apprendimento deve essere ridotto al minimo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top