Makefiles O que é mak a efi f le make

Documentos relacionados
1/16 MAKEFILES Makefiles Programação II

A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

bibliotecas e makefiles em C/C++

OpenWrt: modelagem do

1 Como compilar seu código? 2 Comandos de terminal:

Programação 2010/2011 MEEC

Objetivos. Responder o que é Java; Mostrar as vantagens e desvantagens do Java; Compilar e executar um programa simples.

Introdução ao Python. Programa Computacional

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Primeira Aula Prática

Uma breve introdução a C++ no Eclipse

Ambiente de desenvolvimento

Sistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)

COMPILAÇÃO. Ricardo José Cabeça de Souza

Organização de programas em Python. Vanessa Braganholo

AUTOMAÇÃO E AUTOCONFIGURAÇÃO

Introdução à Linguagem C. K&R: Capitulo 1

Guia Rápido: GCC, Makefile e Valgrind.

No Windows há basicamente dois tipos de programas de usuário:

Figura 1: Operações para gerar um programa executável.

Introdução a Sistemas Abertos. Ambiente shell

UTILIZANDO O CODE BLOCKS

Sistemas Operacionais I Aula Prática 1 - Introdução ao Linux

PROGRAMAÇÃO I. Introdução

Nota sobre esta versão: Esta versão (Cekeikon 5.6) vem com duas versões de OpenCV. Por isso, o tamanho do arquivo é grande.

Linguagens de Domínio Específico

Arquitetura de Computadores

Disciplina de Lógica e Linguagem de Programação Desenvolvido pelo professor Danilo Giacobo Ferramenta Code::Blocks

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber 3/10/ :43 AM

Introdução a shell scripts

Ana Paula Tomás. Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011

Tutorial: Aprenda a criar seu próprio makefile. Darcamo (Forúns Ubuntu)

Programação de Sistemas

Programação 2017/2018 2º Semestre

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans.

Sistema Operacional Unidade 11.2 Shell Script: estruturas condicionais. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

CMD. Prompt de comando do Win 10. Professor Jorge Maestre Carvalho

Linguagem de Programação II Programação Orientada a Objetos. Ambientes de Programação

Desenvolvimento de Aplicações Desktop

3. Linguagem de Programação C

105 Shell Script. João Bosco Teixeira Junior

Ambientes integrados para análise estatística em SIG interfaces R/C++

Linguagem C: diretivas, compilação separada. Prof. Críston Algoritmos e Programação

Algoritmia e Programação APROG. Tecnologia JAVA. IDE Netbeans. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Lógica Proposicional. Respostas dos exercícios

Algoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs)

Introdução ao Terminal do Ubuntu

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa

Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG

Transcrição:

O que é O makefile é um arquivo para configuração de compilação utilizado pelo programa make, cuja ideia é simplificar e agilizar a compilação de programas.

Vantagens e uso Evita a compilação de arquivos desnecessários. Por exemplo, se o programa utiliza 120 bibliotecas e altera-se apenas uma delas, o makefile descobre (comparando as datas de alteração dos arquivos fontes com as dos arquivos anteriormente compilados) qual arquivo foi alterado e compila apenas a biblioteca necessária. Escrever um arquivo makefile é bastante simples. O arquivo é escrito em formato texto DOS e pode ser escrito usando qualquer editor de texto puro (como o pico, gedit ou Notepad).

Forma de utilização Para utilizar o makefile basta criar o arquivo com o nome makefile no diretório/pasta onde se encontram os arquivos fonte para compilar e executar o programa make no mesmo diretório.

O makefile funciona de acordo com regras A sintaxe de uma regra é: regra: dependências <TAB> comando <TAB> comando <TAB> comando <TAB>

Dependências: Antes de executar os comandos de uma regra, o programa make certifica-se que todas as dependências foram satisfeitas. Uma dependência pode ser outra regra ou então algum arquivo necessário para execução dos comandos. Por exemplo, a regra de compilação de um executável pode ter como dependência as regras que compilam as bibliotecas necessárias e também os arquivos fonte necessários.

Lista de comandos: Após as dependências, temos a lista de comandos. Os comandos são indentados com TAB s e não com espaços! Cada comando pode ser qualquer chamada de um programa de linha de comando; por exemplo, Comandos do Sistema Operativo: rm, copy, mkdir, Chamada ao compilador: gcc, cc,

Regra: A regra pode ter qualquer nome. Por exemplo, o nome da regra que compila o arquivo programa.c pode ser compilar.

Um exemplo simples: compilar: programa.c programa.h gcc -o programa.exe programa.c Nestemakefile temos apenas uma regra de nome compilar que gera o executável do programa ( programa.exe ). O programa make, antes de executar os comandos desta regra, verifica se os arquivos programa.c e programa.h existem. Só então são executados os comandos, no caso a compilação.

No caso da dependência ser outra regra, a regra da dependência é avaliada antes da regra dependente. Por exemplo: executar: compilar.\programa.exe compilar: programa.c programa.h gcc -o programa.exe programa.c A primeira regra a ser avaliada é sempre a primeira do arquivo; neste caso, a regra executar. Porém, durante a avaliação da regra executar, é encontrada a dependência compilar.

executar: compilar.\programa.exe compilar: programa.c programa.h gcc -o programa.exe programa.c Como existe uma regra com o nome compilar no arquivo, o make sabe que se trata de uma outra regra e não de um arquivo. Antes de executar os comandos da regra executar, o make avalia a regra compilar, verifica as dependências e executa os comandos da regra compilar.

executar: compilar.\programa.exe compilar: programa.c programa.h gcc -o programa.exe programa.c Agora a regra compilar está satisfeita e o make pode executar os comandos da regra executar, que neste caso executa o programa compilado (.\programa.exe). O programa só é executado se a compilação ocorrer com sucesso. Caso haja um erro de compilação, a avaliação para e o comando da regra executar não são executados.

Outro caso interessante é quando se chama o make duas vezes consecutivas. Se a primeira chamada à compilação ocorreu sem problemas, Na segunda chamada o programa não é compilado. Ou seja, o make percebe que não é necessário compilar o programa e salta a regra compilar, indo direto para a regra executar.

Um outro exemplo: all: iniciar compilar executar iniciar: @echo Bem vindo ao makefile. Tentar executar o programa. executar:.\programa.exe compilar: programa.c programa.h gcc -o programa.exe programa.c Neste caso, o makefile inicia-se pela primeira regra (all) com três dependências: iniciar, compilar e executar.

all: iniciar compilar executar iniciar: @echo Bem vindo ao makefile. Tentar executar o programa. executar:.\programa.exe compilar: programa.c programa.h gcc -o programa.exe programa.c iniciar: escreve uma mensagem de entrada compilar: compila o programa executar: executa o programa (se a compilação tiver sucesso)

Um outro exemplo: all: compilar executar limpar executar:.\programa.exe compilar: programa.c programa.h gcc -o programa.exe programa.c limpar: rm programa.exe Neste caso, o makefile depois de compilar e executar, remove o ficheiro executável (programa.exe).

Não se tem que começar sempre pela primeira regra que aparece. Pode-se informar o make para executar apenas uma das regras. Para isso passa-se como parâmetro na linha de comando o nome da regra que queremos executar. Por exemplo: make limpar