Articulo de referencia

Ninja (sistema de construcción)

{{cite web|last1=Martin|first1=Evan|url=https://groups.google.com/forum/#!searchin/ninja-build/release%7Csort:date/ninja-build/wtfGmg0IoXQ/eH_tgL8eF8YJ|title=Google Groups: ninj...

Ninja es un sistema de compilación desarrollado por Evan Martin, [ 4 ] un empleado de Google . Ninja se centra en la velocidad y se diferencia de otros sistemas de compilación en dos aspectos principales: está diseñado para que sus archivos de entrada sean generados por un sistema de compilación de nivel superior y está diseñado para ejecutar compilaciones lo más rápido posible. [ 5 ]

Sistema de compilación

En esencia, Ninja está diseñado para reemplazar Make , que es lento al realizar compilaciones incrementales (o sin operación). [ 6 ] Esto puede ralentizar considerablemente a los desarrolladores que trabajan en proyectos grandes, como Google Chrome , que compila 40 000 archivos de entrada en un único ejecutable. De hecho, Google Chrome es uno de los principales usuarios y la motivación de Ninja. [ 7 ] También se utiliza para compilar Android (a través de la traducción de Makefile por Kati ), [ 8 ] y lo utilizan la mayoría de los desarrolladores que trabajan con LLVM . [ 9 ]

A diferencia de Make, Ninja carece de funciones como la manipulación de cadenas, ya que los archivos de compilación de Ninja no están diseñados para escribirse manualmente. En su lugar, se debe utilizar un "generador de compilación" para generar los archivos de compilación de Ninja. Gyp , CMake , Meson y gn [ 10 ] son ​​herramientas populares de gestión de compilación que admiten la creación de archivos de compilación para Ninja. [ 11 ]

Ejemplo

A continuación se muestra un ejemplo de un archivo de compilación Ninja que compila dos archivos fuente Csource1.c ( y source2.c) en archivos objeto y luego los enlaza en un ejecutable llamado myprogram. Define dos reglas: una para compilar ( cc) y otra para enlazar ( link):

regla cc comando = gcc -c -o $out $in descripción = CC $out regla link comando = gcc -o $out $in descripción = LINK $out compilar source1.o : cc source 1. c compilar source2.o : cc source 2. c compilar myprogram : link source 1. o source 2. o

Referencias

  1. Martin, Evan. "Google Groups: ninja-build" . Consultado el 18 de junio de 2017 .
  2. "Versión 1.13.2" . 20 de noviembre de 2025. Consultado el 20 de noviembre de 2025 .
  3. "COPIANDO" . Github . Consultado el 5 de septiembre de 2019 .
  4. "Google man abre el sistema de compilación de Chrome como código abierto" .
  5. "Ninja, un pequeño sistema de compilación centrado en la velocidad" . ninja-build.org . Consultado el 21 de enero de 2025 .
  6. Röthlisberger, David. "La herramienta de compilación Ninja" . LWN . Consultado el 18 de junio de 2017 .
  7. "Ninja" . El rendimiento de las aplicaciones de código abierto . Consultado el 18 de junio de 2017 .
  8. "lista de correo de aosp" .
  9. "Documentación de LLVM" .
  10. "gn - Git en Google" .
  11. Kitware. "Documentación de cmake" . Consultado el 18 de junio de 2017 .
  • Sitio web oficialEdita esto en Wikidata
  • ninja en GitHub