build-automation makefile

build-automation - bitrise price



¿Alternativas prometedoras para hacer? (12)

Algunos de los proyectos de GNOME han estado migrando a waf .

Está basado en Python, como Scons, pero también es independiente, por lo que en lugar de requerir que otros desarrolladores tengan tu herramienta de compilación favorita instalada, solo debes copiar la secuencia de comandos de compilación independiente en tu proyecto.

He usado make y makefiles durante muchos años, y aunque el concepto es sólido, la implementación tiene algo que desear.

¿Alguien ha encontrado alguna buena alternativa para hacer que no complique demasiado el problema?


Depende de lo que estás tratando de hacer. Si todo lo que desea es crear dependencias de destino y invocación de comandos, entonces Make es en realidad una de las mejores herramientas para la tarea. :-) Rake es muy agradable, pero puede ser torpe en algunos casos simples. Ant es, por supuesto, una ciudad de verbosidad, pero tiene un mejor soporte para la construcción de lenguajes similares a Java (incluidos Scala y Groovy). Además, Ant está disponible en todas partes . Esa es la razón principal por la que lo uso. Debido a que funciona de manera consistente en Windows, en realidad es incluso más multiplataforma que Make.

Si desea la administración de dependencias para bibliotecas de tipo Java, Maven es la opción canónica, pero personalmente me gusta Buildr mucho mejor. Es más rápido y mucho más fácil de personalizar (está basado en Rake). Desafortunadamente, todavía no es tan ubicuo como Maven.


El sistema de fabricación de Ruby se llama rake: http://rake.rubyforge.org/

Parece bastante prometedor.

Siempre hay Ant: http://ant.apache.org , que personalmente encuentro horrendo. Sin embargo, es el estándar de facto para el desarrollo de Java.


No estoy seguro si estás haciendo la pregunta correcta aquí.

¿Estás buscando una marca simplificada? En ese caso, debe conseguir que alguien que esté muy familiarizado con make cree una serie de archivos (M | m) que simplifiquen su problema.

¿O quieres ver la tecnología subyacente? ¿Deseamos hacer cumplir una arquitectura de tipo de diseño por contrato que está incorporada en el diseño del código y se aplica en él? ¿O posiblemente el lenguaje mismo, por ejemplo, Ada y su concepto de especificaciones (interfaces) y cuerpos (implementaciones)?

¿Qué dirección seguirás definitivamente afectará los posibles resultados de dicha pregunta?

Básicamente, nuevas formas de construir sistemas solo a partir de aquellos componentes que realmente han cambiado versus la adopción de nuevas tecnologías que tienen tales mecanismos incorporados por diseño.

Lo siento, no es una respuesta directa. Solo quería intentar que evalúes qué camino deseas seguir.

aclamaciones,

Robar


Tengo muchos amigos que juran por CMake por el desarrollo multiplataforma:

http://www.cmake.org/

Es el sistema de compilación utilizado para VTK (entre otras cosas), que es una biblioteca C ++ con enlaces multiplataforma de Python, Tcl y Java. Creo que es probablemente la cosa menos complicada que encontrarás con tantas capacidades.

Siempre puedes probar las autotools estándar. Los archivos de Automake son bastante fáciles de armar si solo se ejecuta en Unix y si se apega a C / C ++. La integración es más complicada, y las autotools están lejos del sistema más simple que haya existido.


echa un vistazo a SCons . Por ejemplo, Doom 3 y Blender hacen uso de él.


FlowTracer de RTDA es otra buena opción que he visto usar comercialmente en un entorno a gran escala (decenas de miles de trabajos): http://www.rtda.com/flowtracer-design-flow-infrastructure-software

Tiene una GUI que muestra el gráfico de dependencia con cuadros codificados por colores para trabajos y óvalos para archivos. Cuando la cantidad de trabajos y archivos aumenta, una herramienta basada en GUI como FlowTracer es bastante esencial.

El costo inicial de instalación es más alto que Make. Hay una curva de aprendizaje para configurar tu primer flujo utilizándolo. Después de eso, se vuelve más rápido.


Escribí una herramienta llamada sake que intentaba hacer que escribir cosas parecidas a archivos parecidos fuera muy fácil de leer y escribir.


Todavía prefiero hacer después de haber considerado un montón de alternativas. Cuando usted genera dependencias automáticamente a través del compilador o algo así como fastdep, no queda mucho por hacer. En particular, no quiero que mi script de compilación esté vinculado al lenguaje de implementación, y no me gusta escribir cosas en XML cuando hay disponibles más alternativas legibles. Sin embargo, una herramienta que expone un lenguaje de propósito general tiene mérito, pero otro lenguaje interpretado no lo hace (afaik). ¿Qué está mal con Make? podría apelar a su punto de vista acerca de alejarse de make.

/Alano


doit es una herramienta de python. Está basado en los conceptos de herramientas de compilación pero más genérico.

  • puede definir cómo una tarea / regla está actualizada (no solo verifica las marcas de tiempo, no se requieren los archivos de destino)
  • las dependencias se pueden calcular dinámicamente por otras tareas
  • las acciones de la tarea pueden ser funciones de python o comandos de shell

Tenga en cuenta la herramienta de compilación ninja (v1.0 sept. 2012) que está influenciada por tup y redo .

El generador de archivos de compilación cmake (por ejemplo, para Unix Makefiles, Visual Studio, XCode, Eclipse CDT, ...) también puede generar archivos de compilación ninja desde la versión 2.8.8 (abril de 2012) y, afaik, ninja ahora es incluso la herramienta de compilación predeterminada utilizado por cmake .

Se supone que debe superar a la herramienta make (mejor seguimiento de la dependencia y también está paralelizado).

cmake es una herramienta ya bien establecida. Siempre puede elegir más adelante la herramienta de compilación sin modificar sus archivos de configuración. Entonces, si se desarrolla una compilación mejor en el futuro, que será respaldada por cmake , puede cambiarla convenientemente.

Tenga en cuenta que para c / c ++ mejorar el tiempo de compilación a veces es limitado debido a los encabezados incluidos a través del preprocesador (en particular cuando se usan libs de solo encabezado, por ejemplo boost & eigen ) que con suerte serán reemplazados por la propuesta de módulos (en una revisión técnica de c ++ 11 o eventualmente en c ++ 1y). Consulte esta presentación para obtener detalles sobre este tema.


Recomiendo usar Rake . Es la herramienta más fácil que he encontrado.

Sin embargo, otras buenas herramientas que he usado, si Ruby no es lo tuyo, son:

  • AAP (Python)
  • SCons (Python)
  • Ant (Java, config en XML, bastante complejo)