Ninja (automação de compilação)

Origem: Wikipédia, a enciclopédia livre.
Ninja
Captura de tela
Ninja (automação de compilação)
Ninja sendo usado para compilar dav1d, em conjunto com a configuração do Meson
Desenvolvedor Evan Martin
Plataforma Multiplataforma
Lançamento 2012 (11–12 anos)[1]
Versão estável 1.11.1[2] (15 de maio de 2022; há 22 meses)
Escrito em C++, Python
Sistema operacional Linux, macOS, Windows
Gênero(s) Ferramentas de desenvolvimento de software
Licença Licença Apache 2.0[3]
Estado do desenvolvimento Ativo
Página oficial ninja-build.org
Repositório github.com/ninja-build/ninja.git

Ninja é um pequeno sistema de compilação desenvolvido por Evan Martin,[4] um funcionário do Google. O Ninja tem foco na velocidade e difere de outros sistemas de compilação em dois aspectos principais: ele é projetado para ter seus arquivos de entrada gerados por um sistema de compilação de mais alto-nível e é projetado para executar compilações o mais rápido possível.

Sistema de compilação[editar | editar código-fonte]

Essencialmente o Ninja foi criado para substituir o Make, que é lento ao executar compilações incrementais (ou operações vazias, NO-OP).[5] Isso pode desacelerar consideravelmente os desenvolvedores que trabalham em projetos grandes, como o Google Chrome, que compila 40.000 arquivos de entrada em um único executável. Na verdade, o Google Chrome é o usuário principal e a motivação para o Ninja.[6] Também é usado para compilar o Android (via tradução do Makefile por Kati), [7] e é usado pela maioria dos desenvolvedores que trabalham com o LLVM.[8]

Em contraste com o Make, o Ninja não possui recursos como manipulação de strings, já que os arquivos de compilação do Ninja não devem ser escritos à mão. Em vez disso, um "gerador de compilação" deve ser usado para gerar arquivos de compilação do Ninja. Gyp, CMake, Meson e gn[9] são ferramentas de software de gerenciamento de compilação populares que suportam a criação de arquivos de compilação para o Ninja.[10]

Exemplo[editar | editar código-fonte]

rule cc
  command = gcc -c -o $out $in
  description = CC $out
 
rule link
  command = gcc -o $out $in
  description = LINK $out
 
build source1.o: cc source1.c
build source2.o: cc source2.c
build myprogram: link source1.o source2.o

Referências

  1. Martin, Evan. «Google Groups: ninja-build». Consultado em 12 de novembro de 2021 
  2. «Releases - ninja-build/ninja». Consultado em 18 de fevereiro de 2024 
  3. «COPYING». Github. Consultado em 12 de novembro de 2021 
  4. «Google man open sources Chrome build system» 
  5. Röthlisberger, David. «The Ninja build tool». LWN. Consultado em 12 de novembro de 2021 
  6. «Ninja». The Performance Of Open Source Applications. Consultado em 12 de novembro de 2021 
  7. «aosp mailing list» 
  8. «LLVM documentation» 
  9. «gn - Git at Google» 
  10. Kitware. «cmake Documentation». Consultado em 12 de novembro de 2021 

Ligações externas[editar | editar código-fonte]