Ninja é um sistema de compilação pequeno , com foco na velocidade. Em essência, o Ninja é uma alternativa ao Make . O Ninja é utilizado por diversos projetos, tendo como seu principal cliente o Google Chrome e o Android, e é usado pela maioria dos desenvolvedores que trabalham no LLVM.
Ao contrário do Make , um “gerador de compilação” deve ser usado para gerar arquivos de compilação Ninja. Gyp , CMake , Meson e gn são ferramentas populares de software de gerenciamento de compilação que suportam a criação de arquivos de compilação para o Ninja.
O processo é bem parecido com o do Make.
Supondo que você tenha esse código(Olá, Mundo!) em C: vim main.c
. Nesse exemplo utilizamos o comando gcc para compilar um único arquivo, mas logo abaixo veja com múltiplos arquivos em C++, que só muda o comando e a quantidade de arquivos.
Para compilar com o Ninja, você precisará criar um arquivo build.ninja com o seguinte conteúdo: vim build.ninja
Analisando o arquivo acima, de acordo com conhecimentos prévios sobre o Make, por exemplo, conseguimos notar que o arquivo que será compilado definimos como: main.c , o arquivo temporário chamamos de src.o e o arquivo binário final nomeamos como demo-c.
Agora, basta estar no diretório que você salvou e via linha de comando rodar:
E depois é só rodar o programa:
Existem diversas opções como limpar o(s) arquivo(s) temporários e entre outras opções, para mais detalhes acesse o manual.
Para esse exemplo vamos utilizar o Dec2Bin , um mini programa que converte decimal para binário em C++ . Nesse exemplo utilizamos o comando g++ para compilar múltiplos arquivos. São 3 arquivos , sendo que 1 é somente uma biblioteca .hpp
:
vim main.cpp
vim dectobin.hpp
vim dectobin.cpp
Salvamos os arquivos dentro do diretório dec2bin:
Da mesma forma que a anterior, vamos criar um arquivo build.ninja, só com as seguintes configurações:
Depois é só rodar o comando ninja
e o arquivo program-cpp
ficará pronto no mesmo diretório. Veja a saída na imagem abaixo onde aproveitamos o programinha para converter o número decimal: 9 em binário: 1001:
Simples, né? Abraços!
ninja meson cpp linguagemc compiladores