• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zecapistolas

Ajuda no Makefile

6 mensagens neste tópico

Boas Pessoal,

Estou envolvido num projecto mas estou com algumas dúvidas no meu makefile....

# Makefile

CC = gcc
CFLAGS = -Wall
OBJS_CC = video-text.o video-graphics.o asprite.o sprite.o ints.o timer.o music.o queue.o GQueue.o kbc.o rtc.o GestorJogo.o pixmap.o codepage.o
SRCS_CC = $(OBJS_CC:.o=.c)
EXTRAH = utypes.h
OUTFILE = proj.exe

all: $(OUTFILE)

$(OUTFILE): main.o $(EXTRAH)
$(CC) $(CFLAGS) main.o $(EXTRAH) -o $(OUTFILE)

.c.o: $(SRCS_CC)
$(CC) $(CFLAGS) -c $<

clean:
rm -rf $(OBJS_CC) $(OUTFILE) main.o

rebuild: clean all

Dúvida: como faço para quando altero um ficheiro .h ele me recompile o projecto ?! É que quando altero um ficheiro .h ele diz que não precisa fazer nada, não precisa compilar....

cumps  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ao fazeres make rebuild ele não faz isso?

Faz.... Mas por exemplo, faço "make rebuild" ele limpa e compila todo o projecto, depois edito o ficheiro "sprite.h", faço "make" e ele diz "Nothing to be done for 'all'"....

Um solução (acho eu) seria por no cabeçalho do makefile algo do género:

sprite.o: sprite.c sprite.h

video-graphics.o: video-graphics.c video-graphics.h

...etc...

Mas isso é pouco automático....  :thumbdown:

cumps  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que resolvi o problema....

Aoi nvés de colocar ".c.o: $(SRCS_CC)", coloquei "%.o: %.c %.h" ao que tudo indica resolveu o problema....

Sabem-me garantir que a linha "%.o: %.c %.h" compila apenas o ficheiro source dele e o header dele também.... ñ á o problema de ele estar a criar o ficheiro sprite.o através do ficheiro sprite.c sprite.h GestorJogo.h etc, por exemplo?!

cumps  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não deves fazer assim. O que tu queres é pedir ao compilador as dependências de cada ficheiro.

depend:
$(CXX) $(CXXFLAGS) -MM $(SRC_CPP) > .makedeps

-include .makedeps

Já não me lembro bem se a sintaxe está certa, mas é algo do género. :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não deves fazer assim. O que tu queres é pedir ao compilador as dependências de cada ficheiro.

depend:
$(CXX) $(CXXFLAGS) -MM $(SRC_CPP) > .makedeps

-include .makedeps

Já não me lembro bem se a sintaxe está certa, mas é algo do género. :biggrin:

Não percebi....  :-[

cumps  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora