2010-11-09 15 views
14

Ultimamente sto guardando i sistemi di compilazione e non riesco a trovare nulla di simile a ciò che voglio. Considero troppo basso, non mi piace la sintassi di bjam e CMake, e davvero non mi piace che siano solo per C/C++. Ant e NAnt sono anch'essi orientati alla lingua.Strumenti di costruzione basati su Python

Mi piace molto l'idea di uno strumento di compilazione che utilizza un linguaggio di programmazione reale e Python si adatta perfettamente. Sono stato a guardare Scons e waf, e da questi 2 Trovo WAF come il più vicino a quello che voglio, ma ancora vedo un sacco di lavoro che deve essere fatto per sostenere tutto pianificato, quando dovrei concentrarmi sulla codifica.

Ecco quello che voglio:

  • include e le librerie (per C/C++, Java, C#, Python)

  • voglio usare diverse versioni di compilatori e sostenere diversa destinazione OS e architetture di CPU:

    • per C/C++: MSVC, gcc (cygwin, minGW, versione linux), llvm-gcc, DragonEgg, Clang
    • per C#:. Compilatore Net, Mono (per Windows e Linux) - tutti questi per diverse versioni .Net (come NAnt: 'net-2.0', 'net-3.5', 'net-4.0', 'mono-2.0 ', 'mono-3.5' ...)
  • voglio usare SWIG per sostenere la generazione wrapper per C#, Python, Lua, Java ecc

  • voglio più quindi solo di debug e rilascia le configurazioni - proprio come Visual Studio supporta questo molto facilmente. Esempio: progetto di libreria condivisa costruito MSVC per il wrapping C# e costruito con mingw per il wrapping Python, diverse versioni delle versioni di rilascio - con ottimizzazione non ottimizzata, completamente ottimizzata, produzione ...

  • Desidero considerare il progetto inseguimento. Spiegato: se ho un progetto di libreria condivisa che utilizza SWIG e un altro progetto C# che carica tale wrapping SWIG, la creazione di questa soluzione/ambiente/spazio di lavoro implicherebbe la copia della libreria condivisa risultante, copiando altre librerie condivise che quella libreria condivisa utilizza nel funzionamento directory, e il C# generato wrapper al progetto C#, e quindi generare il progetto C#

  • Nice-to-have: la distribuzione su altre macchine per test di rete

  • Nice-to-have: I don' mi interessa molto la generazione di file di progetto IDE (ad es. come fa CMake per Visual Studio), perché le versioni IDE e compatibili cambiano, e ci sono un sacco di IDE piacevoli (es.per C/C++ CodeBlocks, CodeLite, Eclipse CDT - tutti questi sono portatili su pen drive, VS no), ma Nice-to-have sarebbe l'integrazione di makefile - un makefile che chiama semplicemente makefile/script di questo strumento Build - visto qualcosa di simile per Scons

Guardando oltre quello che ho scritto penso ho chiesto troppo :), ma penso che questo servirà più di me

edit: dimenticato di dire, ma penso che sia implicito dall'uso di Python: voglio che lo strumento sia multipiattaforma

modifica: forse quello che sto cercando non è ancora implementato, ma potrebbe uscire da un waf extens a tutto questo, o Scons forse

+0

+1 Bella domanda, cercavo esattamente la stessa cosa! – helpermethod

+0

Qual è la domanda? Se qualcuno sa di un tale strumento di costruzione, che supporta tutte le funzionalità richieste, credo, ma potrebbe essere reso più chiaro. – unwind

+0

@unwind: hai fatto un punto, mi spiego abbastanza duro, ma specifico –

risposta

2

Ho usato Scons ed è buono e si può davvero fare tutto con esso perché solo il codice Python quindi quello che manca si scrive in Python - è facile.

Alcuni dicono che ha problemi con progetti molto grandi, non ho avuto progetti molto grandi per eseguirlo quindi non lo so.

+0

l'unica cosa che ho trovato come svantaggio di Scons e Waf è che hanno un cosiddetto compilatore di default, scegliere uno sembra gentile di un'opzione nascosta –

+0

e un'altra cosa che entrambi fanno male se me lo chiedi, sono configurazioni di build (come ho detto, oltrepassando il punto di debug e di rilascio) –

Problemi correlati