2010-01-26 16 views
6

Mientras estoy desarrollando en C/C++ y Java, simplemente hago un script compile.bat que hace todo, eso está bien para mí. ¿Por qué debería usar make y por qué debería usar hormiga?¿Cuál es la utilidad real de la marca y la hormiga?

+0

multiplataforma, etc. –

+0

¿por qué la palabra real? implica que hay una "supuesta" utilidad, pero no se dice cuál. Supongo que solo preguntas cuál es la utilidad. – Dan

+0

Si tienes que preguntar cuál es el punto de usar make o horm, no estás listo para entender la diferencia entre ellos. :-) – JesperE

Respuesta

22

Supongamos que tiene 1000 archivos fuente y cambia solo uno de ellos. Con su script .bat tendrá que volver a compilar el lote, con lo cual deberá recompilar solo el que cambió. Esto puede ahorrar bastante (leer horas en un gran proyecto) de tiempo.

Mejor aún, si cambia uno de sus archivos de encabezado, make volverá a compilar solo los archivos de origen que usan ese encabezado.

Estas son las dos características principales que han significado make y sus descendientes se utilizan para todo el desarrollo de software serio con lenguajes compilados.

+0

Diablos, incluso en un proyecto de un solo hombre no es difícil llegar a múltiples compilaciones de limpieza en una máquina rápida. – dmckee

+1

También existe la posibilidad de admitir la construcción de múltiples versiones (depuración, lanzamiento, plataforma específica), automatizar pruebas, instalación, etc. Sí, puede hacer todo eso al hacer sus propias secuencias de comandos, pero ¿por qué inventar la rueda otra vez? –

+2

Y si las dependencias de su archivo MAKE son precisas, puede hacer una compilación paralela simplemente escribiendo 'make -j N' donde' N' es la cantidad de trabajos que desea ejecutar a la vez: gran aceleración en una CPU multi-core. – Dan

1

Por un lado, make y horm guardan los archivos que ya se han compilado, por lo que no se rehace el trabajo si no es necesario.

4

Con un archivo de compilación, puede automatizar algo más que la compilación de su código; puede ejecutar pruebas unitarias, recopilar métricas, artefactos de compilación de paquetes para implementación y más.

Una ventaja, de las clases, de Ant es que inspiró herramientas para otras plataformas: NAnt para .NET, Phing para PHP. Hacen las mismas cosas, y trabajan de la misma manera.

2

Siempre y cuando se desarrolle en Windows: se ajuste a usted mismo.

Pero si comienza a desarrollar con otros Ant and Make son un estándar para describir cómo se construye su aplicación.

+3

+1: un archivo .bat funcionará * solo * en Windows, un archivo '.sh' funcionará * solo * en Unix (sí, lo sé ...). Un archivo Ant 'build.xml' funcionará en todas partes donde pueda ejecutar Ant. –

+0

@JoachimSauer ANT construye solo trabajo donde ANT ha sido instalado, al igual que los scripts SH requieren una instalación de sh, así que no estoy convencido de que Ant esté "en todas partes" de una manera que "sh" no lo es. – davenpcj

2

Puede haber varias razones: - porque usted no es el único en el proyecto - porque alguien tendrá que preocuparse por el script de construcción cuando se fue - debido a un guión compile.bat no es independiente de la plataforma - porque la política del proyecto define la tecnología de construcción, por ejemplo para toda la empresa

Hace poco leí un divertido article about build tools. Para usted, solo la primera parte puede ser de su interés (antes de que comience el ataque de maven)

0

Obtiene cierta neutralidad de plataforma (¿cómo puedo ejecutar su script por lotes en mi linux-box)? Pero más importante: las herramientas de compilación tienen soporte para la resolución de dependencia. Las secuencias de comandos carecen de esto y tienen que construirlo por sí mismas.

Digamos que tiene los objetivos A, B y C. B y C ambos dependen de A. En un script llaman a la subrutina A. Si ahora crea un nuevo objetivo D, eso depende de B y C, de lo que lo hará ejecuta A dos veces. Las herramientas de compilación lo reconocen y ejecutan A solo una vez.

Debido a que esta situación es típica para la tarea de compilar, crear una distribución, probar, crear documentación, etc. las herramientas de compilación son útiles para el desarrollo de software.

0

Sería posible usar un archivo .bat, o bash u otro sabor de script de shell, para hacer todo lo que Ant puede hacer, creo. Pero es mucho más fácil hacer muchas cosas en Ant ...

  • crear/mover/borrar archivos y directorios
  • solicitar fichas de filtro
  • unidad de ejecución a prueba
  • paquete de un frasco, código postal, o la guerra adecuadamente

Muchos proyectos tienen que hacer estos cosas, además de compilar, cuando construyen.

También Ant es independiente de la plataforma, por lo que puede colaborar con quienes utilizan otros sistemas operativos.

¿Pero por qué detenerse en Ant? Apache Maven ofrece características aún más atractivas.

0

Make y Ant realmente entran en su propio cuando se utilizan con sistemas de construcción automatizados o integración continua.

Los requisitos para las compilaciones de producción, compilaciones de prueba y compilaciones de desarrollo son a menudo diferentes, y en un equipo multipersona, diferentes desarrolladores configuran sus entornos de desarrollo de diferentes maneras.

Tener un proceso de creación definitivo resuelve los problemas de "Works on My Machine" (WOMM) que surgen cuando la aplicación necesita construirse en una máquina diferente a la que se desarrolló. Es el último árbitro cuando un desarrollador comprueba el código que no funciona en la máquina de otro desarrollador. Si el proceso de compilación no produce un software en funcionamiento, el primer control del desarrollador se interrumpió. Si produce software en funcionamiento, el entorno de desarrollo del segundo desarrollador se rompe, a menos que se demuestre lo contrario.

Cuestiones relacionadas