Makefile에 관해서...

sadrove의 이미지

현재 Makefile이 아래와 같다고 할때요..

CC		= gcc
CFLAGS		= -W -Wall -g
LDFLAGS		= -lm

test : test.c
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

clean :
	@rm -rf *.o test

make를 하면 당연히 test.c를 컴파일 하는데요..
test.c가 aaa.h 라는 파일을 인클루드 하고 있다고 할때..
한번 컴파일하면 aaa.h 파일의 내용이 바뀌어도..
make: 'test' is up to date.
라고 나오는데요...
aaa.h 파일의 내용도 변경이 되었는지 확인하게 하려면 어떻게 해야할까요?...

p.s 날씨 디땅 좋네요....^^..

creativeidler의 이미지

의존성을 추가해주면 됩니다.

test : test.c aaa.h

sadrove의 이미지

감사합니다...^^

sadrove의 이미지

creativeidler wrote:
의존성을 추가해주면 됩니다.

test : test.c aaa.h

아..근데...
해봤더니..
아래와 같은 메시지가 나오는데 무슨 의미인가요?..ㅠ.ㅠ..

Quote:

gcc -W -Wall -g -o test test.c aaa.h -lm
gcc: compilation of header file requested
make: *** [test] Error 1
creativeidler의 이미지

컴파일 명령에 의존하는 것들을 컴파일하게 되어 있군요. 그래서 aaa.h는 컴파일할 필요가 없는데 컴파일 하려다 에러가 난 거네요.

test : test.c aaa.h
$(CC) $(CFLAGS) -o $@ test.c $(LDFLAGS)

이렇게 하면 되긴 될 것입니다.

좀더 유연하게 .h와 .c를 구분해서 .c만 컴파일하게 하고 싶다거나 한다면 몇 가지 notation을 더 써야합니다.

sadrove의 이미지

감사합니다...꾸벅..