예제 http://blog.naver.com/delusion1224/50175392681
[출처] Makefile 예제|작성자 착각쟁이
makefile 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
CC = gcc CFLAGS = -D_DEBUG TARGET = test SRCS = $(wildcard *.c) OBJECTS = $(SRCS:.c=.o)
.SUFFIXES : .o .c %.o : %.c $(CC) $(CFLAGS) -c -o $@ $<
all : $(TARGET)
$(TARGET) : $(OBJECTS) $(CC) $(CFLAGS) -o $@ $^
clean : rm -rf *.o $(TARGET) |
4~5 line은 다음과 같이 한 줄로 축약될 수도 있다
OBJECTS = $(patsubst %c, %o, $(wildcard *.c))
7~9 line은 현재 Makefile에 정의된 CC와 CFLAGS를 사용하기 위해 추가된 내용이다.
해당 내용이 없더라도 각 object들은 자동으로 compile이 되지만, make 내부에 정의된 매크로가 사용된다.
make 내부에 정의된 매크로에 대한 자세한 내용은 make -p를 해보면 알 수 있다.
다음은 make -p의 일부분
... #기본값 COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c ... %.o: %.c ... |
추가로, Makefile 작성 시 주의해야 할 점은,
각 명령어들은 다른 shell에서 실행된다.
즉, 다음과 같이 Makefile을 작성하면,
... del : cd ./backup rm -rf * |
두 명령이 각자 다른 shell에서 실행되기 때문에 현재 folder의 모든 내용이 삭제가 된다.
올바른 방법은 다음과 같이 한 line에 적는것이다.
cd ./backup && rm -rf *
&& 대신 ;를 사용해도 되지만 backup folder가 없을 경우에는 역시 현재 folder의 내용들이 삭제 되므로 좋지 않다.
[출처] Makefile 예제|작성자 착각쟁이
'리눅스 서버에 대해서 > 리눅스 팁들' 카테고리의 다른 글
[기고]약정 벗은 안드로이드, 서버가 되다…'서품폰' (0) | 2013.10.22 |
---|---|
sed 명령어로 파일내 문자열 치환하기 (0) | 2013.10.17 |
vi 대신 이클립스로 소스 수정하기 (0) | 2013.09.20 |
vimrc 설정 (0) | 2013.09.20 |
리눅스 iptables 사용법 (0) | 2013.04.22 |