MakeFile

Re: MakeFile

por José Coelho de Pina -
Número de respostas: 0
Salve, Veja um exemplo de Makefile bem simples que está abaixo. Copie este Makefile fa página http://www.ime.usp.br/~coelho/mac0122-2012/aulas/programas/binomial/. Vários dos diretórios que estão no diretório "programas" das notas de aula tem Makefiles. O Make é um baita programa, com muitas opções e possibilidades, eu uso o básico.
# Exemplo de Makefile
LIBDIR = /usr/local/lib
CFLAGS = -g  -Wall -ansi -pedantic -Wno-unused-result
CC = gcc
RM=rm
###########################################################################

%: %.c
	$(CC) $(CFLAGS) $<  -o $@

Um Makefile consiste de uma seqüência de "regras" com o seguinte formato:
  <target> :  <dependências>
         <comando1>
         <comando2>
         ...

      Um target é usualmente o nome de um arquivo que é gerado por um programa; exemplos de targets são arquivos executáveis (bin ou .o). Um target também pode ser o nome de uma ação, tal como "clean".

      Uma dependência é um arquivo que é usado para criar o target. Um target pode depender de vários arquivos.

      Um comando é uma ação que make pode mandar que seja executada. Um regra pode ter mais que um comando, cada um em uma linha. Deve existir um caractere TAB ('\t') no início de cada linha que possui um comando.

Outro exemplo de um Makefile

      A seguir está um exemplo bem besta de um arquivo Makefile, os números das linhas foram colocados apenas para efeito de referência, eles não fazem parte do Makefile:

1   meuprog: meuprog.o  fila.o  etc.o
2         gcc meuprog.o fila.o etc.o -o meuprog 
3
4   meuprog.o:  meuprog.c  minhasdefs.h  fila.h   etc.h
5         gcc -c meuprog.c
6
7   fila.o:  fila.c minhasdefs.h  fila.h
8         gcc -c fila.c
9
10  etc.o: etc.c  minhasdefs.h  etc.h
11        gcc -c etc.c
12
13  clean:
14        rm -f meuprog.o fila.o etc.o
15        cp meuprog.c ../ultimo/meuprog-salvo.c
16        cp fila.c  ../ultimo/fila-sava.c

Este exemplo ilustra o formato do arquivo:

Linhas 1, 4, 7, 10 e 13 fornecem informações de dependência. Em uma linha de dependência o nome de um target file aparece primeiro, seguido por dois pontos (':'). Depois dos dois pontos segue-se uma lista (possivelmente vazia) de arquivos dos quais o target depende. A Linha 7, por exemplo, diz que o target file fila.o depende dos arquivos fila.c, minhasdefs.h e fila.h.

Uma linha de dependência é seguida por uma ou mais linhas com comandos (rebuild commands) que criam ou atualizam o target file especificado na linha de dependência. O primeiro caractere de um linha contendo um comando deve ser um TAB (`\t'); uma, aparentemente idêntica, seqüência de espaços não pode ser usada no lugar do TAB. Linhas 2, 5, 8, 11 e 14 contêm comandos. A Linha 8, por exemplo, diz que o comando

meu_prompt> gcc -c fila.c
 
deverá ser executado para reconstruir o target fila.o a partir dos arquivos fila.c, minhasdefs.h e fila.h. Várias linhas de comando podem seguir uma linha de dependência, como mostra a linha de dependência 13.

As linhas em branco (linhas 3, 6, 9 e 12) são ignoradas. Estas linhas podem estar presentes apenas para facilitar a legibilidade do Makefile, mas elas não são necessária.


Copie o texto acima da página: http://www.ime.usp.br/~coelho/mac0328-2011/tarefas/tarefa3/