2010-11-09 14 views
14

Últimamente he estado buscando sistemas de compilación y no encuentro nada parecido a lo que quiero. Considero demasiado bajo, no me gusta la sintaxis de bjam y CMake, y realmente no me gusta que solo sean para C/C++. Ant y NAnt también están demasiado orientados al lenguaje.Herramientas de compilación basadas en Python

Me gusta mucho la idea de una herramienta de compilación que utiliza un lenguaje de programación real y Python se adapta muy bien. He estado buscando en Scons y waf, y de estos 2 me parece WAF como el más cercano a lo que yo quiero, pero todavía veo una gran cantidad de trabajo que tiene que ser hecho para apoyar todo lo planeado, cuando debería centrarme en la codificación.

Esto es lo que quiero:

  • incluye y bibliotecas (para C/C++, Java, C#, Python)

  • quiero usar diferentes versiones de los compiladores y apoyar diferente objetivo OS y arquitecturas de CPU:

    • para C/C++: MSVC, gcc (cygwin, MinGW, versión Linux), llvm-gcc, DragonEgg, Clang
    • para C#: compilador .Net, Mono (para Windows y Linux) - todos estos para diferentes versiones .Net (como NAnt's: 'net-2.0', 'net-3.5', 'net-4.0', 'mono-2.0 ', 'mono-3.5' ...)
  • quiero usar TRAGO para apoyar la generación envoltorio para C#, Python, Lua, Java, etc.

  • quiero más que sólo depuración y Liberar configuraciones, al igual que Visual Studio admite esto muy fácilmente. Ejemplo: biblioteca compartida proyecto creado MSVC para C# wrapping, y construido con mingw para Python wrapping, diferentes versiones de versiones de lanzamiento - con optimización no optimizada, producción, ofuscado ...

  • Quiero que considere proyecto rastreo. Explicado: si tengo un proyecto de biblioteca compartida usando SWIG y un proyecto de C# diferente que carga esa envoltura de SWIG, construir esta solución/entorno/área de trabajo implicaría copiar la biblioteca compartida resultante, copiar otras bibliotecas compartidas que esa biblioteca compartida usa en el trabajo directorio y el C# generadas envoltorios al proyecto de C#, y luego construir el proyecto de C#

  • Niza-a-tener: el despliegue en otras máquinas para pruebas de red

  • Niza-a-tener: I don' Realmente me importa la generación de archivos del proyecto IDE (por ejemplo, como CMake hace para Visual Studio), porque las versiones IDE y la compatibilidad cambian, y hay un montón de IDE agradables por ahí (por ejemplo,para C/C++ CodeBlocks, CodeLite, Eclipse CDT, todos estos son portátiles en la memoria USB, VS no), pero Nice-to-have sería la integración de makefile, un archivo MAKE que simplemente llama al archivo make/script de esta herramienta Build. visto algo similar para Scons

Mirada sobre lo que escribí Creo que pedía demasiado :), pero creo que esto dará servicio a más y luego me

de edición: se olvidó de decir, pero creo que es implicado desde el uso de Python: Quiero que la herramienta sea multiplataforma

editar: quizás lo que estoy buscando no esté implementado aún, pero podría salir de una extensión de waf Para todo esto, o Scons tal vez

+0

+1 Buena pregunta, ¡estaba buscando exactamente lo mismo! – helpermethod

+0

¿Cuál es la pregunta? Si alguien sabe de una herramienta de compilación así, eso admite todas las características solicitadas, supongo, pero podría hacerse más clara. – unwind

+0

@unwind: hiciste un punto, me explico bastante duro, pero específico –

Respuesta

2

Utilicé Scons y es bueno y realmente se puede hacer todo con él porque solo se usa el código de Python, así que lo que le falta escribir en Python es fácil.

Algunos dicen que tiene problemas con proyectos muy grandes, no tenía proyectos muy grandes para ejecutarlos, así que no sé.

+0

lo único que encontré como una desventaja de Scons y waf es que tienen un llamado compilador predeterminado, eligiendo uno parece amable de una opción oculta –

+0

y otra cosa que ambos hacen mal si me preguntas, es configuraciones de compilación (como dije, pasando más allá del punto de depuración y liberación) –

Cuestiones relacionadas