No artigo que nós criamos: Tutorial Definitivo do GNU Autotools para Iniciantes , mostramos todo o passo à passo com exemplo para você gerar um configure
de forma padronizada . E esse arquivo(configure
) após executado irá gerar um Makefile para consequentemente construir um projeto e ser devidamente instalado/desinstalado no sistema, bem como seus exemplos, documentação e manual.
No entanto, se você acha que todo aquele procedimento não é necessário para seu projeto(que pode ser mais simples) , você pode criar diretamente um Makefile na unha de forma rápida e chegará ao mesmo resultado.
Um makefile é um arquivo (por padrão chamado de “Makefile”) contendo um conjunto de diretivas usadas pela ferramenta de automação de compilação make
para gerar um alvo/meta(instalar, desinstalar, remover alguns arquivos e outros).
Um makefile contém essencialmente atribuições de variáveis, comentários e regras (“targets”). Comentários são iniciados com o carácter “#”.
Você pode usar um editor de texto para escrever seu Makefile, no entanto, é necessário ficar atento aos detalhes, pois o Makefile gera erro até com espaços onde deveria ser TAB. Vejamos algumas linhas:
main.cpp
, mas o certo seria todos os binário para formar o linker;make
, o arquivo já vai entender;install
;De início para meio estranho, mas esse Makefile se resume em: c++ main.cpp -o nomedoprograma
. Os parametros install
e clean
são opcionais para a construção do programa.
Você pode criar diversas variáveis para o produto final. Nesse exemplo abaixo, digamos que você quer os parametros:
-g
(debugar);-Wall
(para que o compilador informe os warnings por mais básicos que sejam, mas você quer seu programa totalmente padronizado com a ISOCPP);-pthread
você vai compilar uma biblioteca gráfica e o linker precisa desse arquivo separadamente;-export-dynamic
e por fim mais esse parametro , pois nesse caso digamos que você está compilando com a biblioteca gtkmm.Logo, além das variáveis básicas que vimos no exemplo básico, o final ficaria assim:
Perceba que dessa vez os OBJS informa os binários, e se você usar só o comando
make
, não vai funcionar, pois o ALVO mínimo para construção do programa é o parametroall
. Os arquivos códigos estão dentro de um diretório:src/
Eu crio e uso Makefiles diariamente, criei até um comando em Shell, faça também, que gera um pra mim passando somente os arquivos como parametro . A verdade é que não há segredos, basta respeitar essas regras básicas. Os nomes de variáveis você pode até decidir e lembre-se de usar TAB abaixo dos ALVOS onde ficarão os comandos.
Se ainda não pegou, sugiro você dá uma olhada nos exemplos simples sugerido pelos caras do GNU, foi lá que eu aprendi: https://www.gnu.org/software/make/manual/html_node/Simple-Makefile.html . Os arquivos do exemplo aqui citados podem ser conseguidos no tutorial que eu fiz pra documentação do Gentoo nesse link: https://wiki.gentoo.org/wiki/Basic_guide_to_write_Gentoo_Ebuilds .
Abraços!
makefile make gnu cpp linguagemc