Prévia do material em texto
Arquivos Makefile Compilação profissional de programas curso sobre compilação profissional com arquivos Makefile Este curso é um oferecimento do Grupo de programação aplicada à geofísica (GPGEOF). Todo o material do curso foi produzido com objetivo educacional e pode ser reproduzido livremente. Se inscreva no nosso canal no Youtube: https://www.youtube.com/channel/UCi5XD5PCQtPrIRD0H_GJvag Códigos disponíveis no Github: https://www.github.com/Dirack Prof.: Rodolfo André Cardoso Neves (Dirack) ÍNDICE 1. Apresentação sobre Makefile e Olá mundo! 2. Alvo ‘all’ e ‘make alvo’ 3. Dependências 4. 3 Perguntas Makefile 5. Compilando módulos 6. Remover arquivos com ‘make clean’ Compilação? Linguagem compilada x Linguagem Interpretada. A máquina não entende português! Verificação de erros de sintaxe Erros de lógica? (Infelizmente não!) Makefile Diretivas de compilação. Tabulação. Baseado em ‘Regras’ (‘alvo’, ‘dependência’ e ‘ação’). teste.x: teste.f90 gfortran teste.f90 -o teste.x Alvo ‘all’ e ‘make alvo’ O alvo ‘all’ tem prioridade na execução. Basta digitar ‘make’ para executar ‘all’ @ serve para execução silenciosa # Exibir mensagem na tela all: @echo “Olá mundo, Makefile!” Dependências Uma dependência é executada antes Exemplo, primeiro exibe ‘mensagem’ depois executa ‘all’ (Pois ‘all’ depende de ‘mensagem’): all: mensagem @echo “Executando alvo ‘all’...” mensagem: @echo “Exibindo mensagem...” 3 Perguntas Makefile Alvo: O que será produzido? Dependência: Do que eu preciso para produzir o Alvo? Comando: Como, a partir da Dependência, vou produzir o Alvo? Alvo: Dependência Comando Compilando programa com dependências programa.x: programa.f90 modulo.o gfortran modulo.o programa.f90 -o programa.x modulo.o: modulo.f90 gfortran -c modulo.f90 Remover arquivos com ‘make clean’ O alvo ‘clean’ é utilizado para a remoção de arquivos desnecessários Não é necessário dependência, basta chamar ‘make clean’ clean: rm *.o rm *.mod Opções de compilação (Flags) -c # Compilar -o # Direcionar a saída para -J # Direcionar .mod para -I # Buscar módulos em Variáveis e Máscaras Atribuir valor a uma variável e utilizar: SRC = ./src OBJ = ./obj $(OBJ)/modulo.o: $(SRC)/modulo.f90 gfortran -c $(SRC)/modulo.f90 -o $(OBJ)/modulo.o Variáveis e Máscaras Máscaras representam: $