2010-01-13 14 views
10

Quali sono le forze in atto mantenendo crufty il vecchio Make (con o senza strumenti di generazione di makefile) in primo piano come strumento di costruzione? Sono carenze nelle alternative che impediscono loro di essere largamente adottati, o di pubblicità insufficiente, o fanno qualcosa riguardo a Mantenerlo in atto?Motivo della popolarità di Make rispetto alle alternative

Nonostante le molte debolezze e le difficoltà di Effettuare che si occupano di progetti di grandi dimensioni (per esempio vedi http://freshmeat.net/articles/what-is-wrong-with-make) sembra essere ancora più diffuso di nuove, migliori alternative quali Scons, Jam, Rake, Cook, e altri.

Esistono benefici misurabili alle alternative, o sono le "quote di mercato" dovuto principalmente alla opinione e l'esperienza del team leader?

+2

"La spedizione è una funzionalità". Una volta che qualcosa diventa "standard", ci vuole un grande sforzo per passare a qualcosa di nuovo - anche se offre alcuni vantaggi. Probabilmente, i progetti che già utilizzano 'make' * non passeranno mai e non c'è molto incentivo ad avere sviluppatori nella stessa software house utilizzando due strumenti di compilazione completamente diversi. –

+5

wiki della comunità ...... – jldupont

+1

Plain make non è utilizzato da molti progetti di grandi dimensioni. Gli autotools sono l'onnipresente incumbent, offrendo portabilità e flessibilità. – Tobu

risposta

4
  • semplicità - facile fare le cose semplici
  • ubiquità - qualche versione è sul sistema
  • velocità - abbastanza veloce per la maggior parte delle cose
  • espressiva - abbastanza buona partita per il lavoro
  • complessità non ovvia - Principalmente grandi progetti espongono problemi
+0

La maggior parte di queste qualità può essere trovata anche in altri strumenti di costruzione. Forse non tutti in un altro? – DarenW

+1

@DarrenW - "l'ubiquità" può essere trovato in nessun altro strumento di costruzione. –

9

Ubiquity: Mi piace Fai perché posso fiducia che sarà disponibile dove ne ho bisogno cioè installato o facilmente installabile sul computer di destinazione.

1

La disponibilità su un gran numero di piattaforme probabilmente aiuta. Se si scrive un prodotto per più piattaforme, sapendo che sarà sempre presente, vi è un punto positivo. È doloroso dover trasferire il tuo strumento di costruzione su una nuova piattaforma prima di poter creare il tuo progetto.

5

quanto riguarda la tua domanda, che le forze stanno mantenendo rendere viva la sua ... la forza dell'abitudine.

+0

sì, "make" è un po 'come BASIC o Fortran. –

+0

Per alcune definizioni di "mi piace", che non includono l'esecuzione con un comando standard, in un formato file standard, creando e distribuendo il progetto, in parallelo, su qualsiasi cosa, da una casella standard UNIX a un supercomputer moderno, a un Computer di casa degli anni '80. –

7

E 'ampiamente disponibili, ben documentato, conciso e potente + migliore di tutti - non XML!.

Lo uso da quasi 15 anni e ancora non ho trovato qualcosa di meglio. La cosa più bella che ho fatto è avere un master makefile che generi makefile per i progetti secondari al volo.

+9

+1 per "no XML"! –

+2

Grazie! L'aspetto XML di altri strumenti più recenti è un vero problema per me. Dopo 16 anni di C/C++, ho lavorato con Ruby per 3 anni e mentre adoro quell'ambiente, Rake non ha più nulla da fare. Nel mondo Java, Ant sembra troppo prolisso per quello che fa. –

+2

no XML ma __tabs__ –

0

Hm, non ho mai usato make come sistema di compilazione.

Oltre a questo, si tratta di un linguaggio di programmazione a flusso di dati-unico, dove si può descrivere insieme di nodi, ogni scopo specifico di servire, descrivere il loro comportamento, e lasciare che la maniglia manager e controllare il flusso di dati tra di loro.

1

Abbiamo usato scons su un progetto relativamente grande per sostituire make, e abbiamo scoperto che si trattava di un sistema ragionevolmente flessibile, che ci ha permesso di fare degli hacker molto necessari (ma molto sfortunati) per far sì che le cose costruissero come avevamo bisogno a. Inoltre, make is -strange-.

+0

Sì, sembra che tutte le alternative da fare e farsi da sole abbiano bisogno di hackerare sui progetti più grandi. Da quando ho posto la domanda, ho iniziato a lavorare su progetti complessi usando scons convertiti in cmake. Cmake è meno problematico, meno hacking ma ancora, alcuni. E la stranezza è una proprietà non assente da qualsiasi strumento software o linguaggio, e non sono sicuro se ciò è buono (prevenendo la noia) o cattivo (confusione, errori sorprendenti). – DarenW

0

penso che quello che avrebbe dovuto verificarsi di vedere un grande cambiamento ad un altro strumento, è prima lo strumento dovrebbe essere creato .... che è significativamente migliore. e per influenzare il cambiamento, una delle distro di Linux o uno dei pacchetti principali dovrebbe passare ad esso e probabilmente mantenere il vecchio arround per compatibilità. immaginavo che il nuovo strumento di creazione sarebbe in grado di generare i makefile legacy.Linux ha già dimostrato quanto possa risolvere il sistema di controllo del codice sorgente con git. Ho una buona impressione che potrebbe inventare qualcosa di abbastanza interessante e fare amicizia con Git.

Problemi correlati