Programar em C/Makefiles: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição
Linha 186:
OBJ=teste.o main.o
all: $(EXEC)
@echo "Vou comesar a compilaçao"
#Nao coloquei a variavel OBJ para que possao entender as variaveis internas.
#Se entenderao podem colocar $(OBJ) no lugar de teste.o main.o
Linha 206:
 
*Po legal ;) parece até trabalho de gente grande.
 
====Sub Makefiles:====
Ler tudo isso so para compilar uma programa??<br>
O sub-makefile e lançado por meio de um "Makefile principal" vamos simplificar para o Patrao Makefile.<br>
Aonde estavamos??...A sim para que serve??<br>
O Makefile Principal executa os sub-makesfiles de outras pastas.<br>
Como ele faz?? <br>
Usamos uma variavel pre-definida $(MAKE).<br>
Bao ao trabalho..
Crie dentro da pasta "Projetos" outra pasta com o nome "sub-make".Dentro da pasta sub-make crie um arquivo <br>Makefile e um arquivo submake.c
 
Dentro da pasta sub-make coloque este Makefile.
 
##################Pasta:sub-make ## Makefile ###################
CC=gcc
CFLAGS=-W -Wall -ansi -pedantic
EXEC=teste2
SRC= $(wildcard *.c)
OBJ= $(SRC:.c=.o)
all: $(EXEC)
@echo "compilando sub-makefile"
@echo "sub-makefile compilado"
teste2: $(OBJ)
@$(CC) -o $@ $^
.PHONY: clean mrproper
clean:
@rm -rf *.o
mrproper: clean
@rm -rf $(EXEC)
 
Agora vamos escrever o arquivo subteste.c .
 
#include <stdio.h>
#include <stdlib.h>
/* Informaçao
* Nao utilisem este codigo para fazer um kernel
*/
int main(void)
{
printf("Sou o binario que esta em sub-make");
printf("Finalmente em fim vivo graças ao Patrao Makefiles ;)");
return (0);
}
 
Agora retorne na pasta "Projeto" vamos modificar o Makefile .<br>
Vamos colocar a siguinte linha:
@cd sub-make && $(MAKE)
*Explicando: "@" silencioso "cd" para abrir a pasta sub-make "&&" e executar make "$(MAKE)"
*Vamos fazer a mesma coisa para "clean:" e "mrproper:" entao ao executar "make clean" no console ele vai executar o mesmo comando no sub-makefile.
########################## O Makefile principal ##########################"
CC=gcc
CFLAGS=-W -Wall -ansi -pedantic
EXEC=teste
SRC= $(wildcard *.c)
OBJ= $(SRC:.c=.o)
all: $(EXEC)
@echo "Compilando Projeto"
@echo "O patrao foi compilado"
#A linha que vai compilar sub-make
@cd sub-make && $(MAKE)
teste: $(OBJ)
@$(CC) -o $@ $^
%.o: %.c
@$(CC) -o $@ -c $< $(CFLAGS)
main.o: main.c teste.h
@$(CC) -o $@ -c $< $(CFLAGS)
.PHONY: clean mrproper
clean:
@rm -rf *.o *~
# E a mesma coisa que dar um F4 dentro da pasta sub-make
# e escrever make clean
@cd sub-make && $(MAKE) $@
mrproper: clean
@rm -rf $(EXEC)
#modificamos aqui tambem
@cd sub-make && $(MAKE) $@
 
Nao esquesa de dar TAB em todas as llinhas que estao em baixo dos ":" dois pontinhos.
OK agora e so dar um F4 dentro da pasta projetos e voce tem trs comandos a disposiçao.<br>
 
*make
*make clean
*make mrproper