프로젝트에서 사용중인 Makefile 을 예를 들어서 매크로나 의미들을 남기고자 한다.
include ../Makefile.tmpl
CC = gcc
LIBDF = ../library/libdf.a
LDFLAGS = -lpthread
TARGET = watchProcess
OBJS = process_manager.o
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(INCLUDE) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBDF) \
-o $@
.c.o:
$(CC) $(INCLUDE) $(CFLAGS) -c $<
process_manager.o: process_manager.h $(LIBDF)
clean:
rm -rf *.o core tags *.bak $(TARGET)
1. TARGET 변수는 최종 실행물 이름.
2. OBJS 변수는 코드 오브젝트 파일들 리스트.
ex) OBJS = a1.o a2.o a3.o
3. "왼쪽: 오른쪽" 왼쪽은 "목표", 오른쪽은 "조건". 오른쪽에 해당하는 내용이 변경/수정되었을 경우, 왼쪽 "목표" 의 "명령" 항목을 실행
위의 예에서
$(TARGET): $(OBJS)
$CC ~
=> $(OBJS) 즉, process_manager.o 변경사항이 있을때 "$(CC) ~ -o $@ "실행. "$@" 매크로 의미는 "목표" 에 해당하는 이름. 여기서는 $(TARGET) 이 되고, watchProcess 와 같음.
4. ".c.o" : .c 파일을 .o 파일로 컴파일할때 전체 적용시키기 위한 확장자 규칙.
위의 예 $(CFLAGS) -c $< 에서 "$<" 는 조건의 첫번째 파일이라는 의미하는 매크로인데, "조건" 이 없지만 전체적용이라서 해당 .c 파일(여기서는 process_manager.c) 하나를 가리킨다.
변경되어서 컴파일할때는 다음과 같이 바뀐다.
$(CC) $(INCLUDE) $(CFLAGS) -c $<
=> gcc -I../include -g -c process_manager.c
* 참조한 링크
http://forum.falinux.com/zbxe/index.php?document_srl=405822
저장된 PDF:
'Thinking > Study' 카테고리의 다른 글
Objective-C 에서 Properties, iVar 설명 (0) | 2014.11.04 |
---|---|
MANIFEST.MF 파일에서 버전 정보를 얻어오는 방법 (0) | 2014.08.28 |
linux 에 서 objective-C 컴파일 (0) | 2011.12.16 |
어플리케이션 개발자, 아이폰 매력에 빠지다 (0) | 2011.12.16 |
Objective-C (3rd Edition)(Developer's Library) _ 8장 (0) | 2011.12.14 |