Ninja (automação de compilação)
Este artigo resulta, no todo ou em parte, de uma tradução do artigo «Ninja (build system)» na Wikipédia em inglês, na versão original. |
Ninja | |
---|---|
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 ) |
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 |
Repositório | github |
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
- ↑ Martin, Evan. «Google Groups: ninja-build». Consultado em 12 de novembro de 2021
- ↑ «Releases - ninja-build/ninja». Consultado em 18 de fevereiro de 2024
- ↑ «COPYING». Github. Consultado em 12 de novembro de 2021
- ↑ «Google man open sources Chrome build system»
- ↑ Röthlisberger, David. «The Ninja build tool». LWN. Consultado em 12 de novembro de 2021
- ↑ «Ninja». The Performance Of Open Source Applications. Consultado em 12 de novembro de 2021
- ↑ «aosp mailing list»
- ↑ «LLVM documentation»
- ↑ «gn - Git at Google»
- ↑ Kitware. «cmake Documentation». Consultado em 12 de novembro de 2021
Ligações externas[editar | editar código-fonte]
- Sítio oficial (em inglês)
- ninja no GitHub