Domanda

Ho usato Make e Makefiles per molti anni e, sebbene il concetto sia solido, l'implementazione ha qualcosa a desiderare.

Qualcuno ha trovato buone alternative per renderlo che non complicherà eccessivamente il problema?

È stato utile?

Soluzione

guardare SCons.Ad esempio Doom 3 e Blender ne fanno uso.

Altri suggerimenti

Ho molti amici che giurano su CMake per lo sviluppo multipiattaforma:

http://www.cmake.org/

È il sistema di compilazione utilizzato per VTK (tra le altre cose), che è una libreria C++ con collegamenti Python, Tcl e Java multipiattaforma.Penso che sia probabilmente la cosa meno complicata che troverai con così tante funzionalità.

Puoi sempre provare lo standard strumenti automatici.I file Automake sono abbastanza facili da mettere insieme se usi solo Unix e se ti attieni a C/C++.L'integrazione è più complicata e gli autotools sono lungi dall'essere il sistema più semplice di sempre.

Alcuni dei progetti GNOME sono stati migrati verso waf.

È basato su Python, come Scons, ma anche autonomo, quindi anziché richiedere ad altri sviluppatori di installare il tuo strumento di compilazione preferito, devi semplicemente copiare lo script di compilazione autonomo nel tuo progetto.

Consiglio di utilizzare Rastrello.È lo strumento più semplice che ho trovato.

Altri buoni strumenti che ho usato, però, se Ruby non fa per te, sono:

  • AAP (Pitone)
  • SCons (Pitone)
  • Formica (Java, configurazione in XML, piuttosto complessa)

fallo è uno strumento Python.Si basa sui concetti di build-tools ma è più generico.

  • puoi definire come un'attività/regola è aggiornata (non solo controllando i timestamp, i file di destinazione non sono richiesti)
  • le dipendenze possono essere calcolate dinamicamente da altre attività
  • le azioni dell'attività possono essere funzioni Python o comandi shell

Sii consapevole del ninja strumento di creazione (v1.8.2 settembre 2017) che è influenzato da tup E redo.

Il generatore di file di build cmake (per esempio.per Unix Makefiles, Visual Studio, XCode, Eclipse CDT, ...) possono anche generare ninja build file dalla versione 2.8.8 (aprile 2012) e, afaik, ninja ora è anche lo strumento di compilazione predefinito utilizzato da cmake.

Dovrebbe sovraperformare il make strumento (migliore tracciamento delle dipendenze ed è anche parallelizzato).

cmake è uno strumento già consolidato.Puoi sempre scegliere in seguito lo strumento di creazione senza modificare i file di configurazione.Quindi, se in futuro verrà sviluppata una build migliore che sarà supportata da cmake puoi passare ad esso comodamente.

Si noti che per c/c++ il miglioramento del tempo di compilazione è talvolta limitato a causa delle intestazioni incluse tramite il preprocessore (in particolare quando si utilizzano librerie di sole intestazioni, ad esempio aumento & proprio) che si spera sarà sostituito dalla proposta di moduli (in una revisione tecnica di c++11 o eventualmente in c++1y).Controlla questo presentazione per i dettagli su questo problema.

Ho scritto uno strumento chiamato scopo che ha cercato di rendere la scrittura di cose simili a makefile molto facile da leggere e scrivere.

Dipende da cosa stai cercando di fare.Se Tutto quello che desideri sono le dipendenze di destinazione in stile make e l'invocazione dei comandi, quindi Make è in realtà uno degli strumenti migliori per l'attività.:-) Rake è molto carino, ma può essere goffo in alcuni casi semplici.Ant è ovviamente verbosity city, ma ha un supporto migliore per la creazione di linguaggi simili a Java (Scala e Groovy inclusi).Inoltre, Ant è disponibile ovunque.Questo è il motivo principale per cui lo uso.Poiché funziona in modo coerente su Windows, in realtà è ancora più multipiattaforma di Make.

Se desideri la gestione delle dipendenze per le librerie simili a Java, Maven è la scelta canonica, ma personalmente preferisco Buildr.È più veloce e molto più facile da personalizzare (è basato su Rake).Sfortunatamente, non è ancora così onnipresente come Maven.

Preferisco ancora make dopo aver considerato un sacco di alternative.Quando generi automaticamente le dipendenze tramite il compilatore o qualcosa come fastdep non c'è molto da fare.In particolare, non voglio che il mio script di build sia legato al linguaggio di implementazione e non mi piace scrivere cose in XML quando sono disponibili alternative più leggibili.Uno strumento che espone un linguaggio di uso generale ha tuttavia dei meriti, ma ancora un altro linguaggio interpretato no (afaik). Cosa c'è di sbagliato in Make? potrebbe fare appello al tuo punto di vista sull'allontanamento da make.

/Allan

Il sistema make di Ruby si chiama rake: http://rake.rubyforge.org/

Sembra abbastanza promettente.

C'è sempre Ant: http://ant.apache.org, che personalmente trovo orrendo.Tuttavia, è lo standard di fatto per lo sviluppo Java.

Non sono sicuro che tu stia facendo la domanda corretta qui.

Cerchi una marca semplificata?In tal caso, è necessario che qualcuno che abbia molta familiarità con make crei una serie di file (M|m)ake che semplificheranno il problema.

Oppure vuoi dare un'occhiata alla tecnologia sottostante?Vogliamo applicare un'architettura di tipo progettazione per contratto integrata e applicata nella progettazione del codice?O forse, la lingua stessa, ad es.Ada e il suo concetto di specifiche (interfacce) e corpi (implementazioni)?

Quale direzione stai cercando influenzerà sicuramente i potenziali risultati di una domanda del genere?

Fondamentalmente, nuovi modi di costruire sistemi partendo solo da quei componenti che sono realmente cambiati rispetto all'adozione di nuove tecnologie che hanno tali meccanismi integrati fin dalla progettazione.

Mi spiace, non è una risposta diretta.Volevo solo provare a farti valutare quale percorso volevi intraprendere.

saluti,

rapinare

FlowTracer di RTDA è un'altra buona scelta che ho visto utilizzata commercialmente in un ambiente su larga scala (decine di migliaia di lavori): http://www.rtda.com/flowtracer-design-flow-infrastructure-software

Ha una GUI che mostra il grafico delle dipendenze con caselle codificate a colori per i lavori e ovali per i file.Quando il numero di lavori e file diventa elevato, uno strumento basato su GUI come FlowTracer è praticamente essenziale.

Il costo di installazione iniziale è superiore a Make.Esiste una curva di apprendimento per impostare il tuo primo flusso utilizzandolo.Dopodiché, diventa più veloce.

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