.c.o:
gcc -c $<
%.o:%.c
gcc -c -o $@ $<
$< : 입력화일
$@ : 출력화일
$* : 입력 화일에서 확장자를 떼낸 화일명
$^ :
DEBUG_OBJS = main_dbg.o edit_dbg.o
%_dbg.o:%c
gcc -c -g -o $@ $<
target_dbg: $(DEBUG_OBJS)
gcc -o $@ $(DEBUG_OBJS)
myprog: main.o foo.o
gcc -o $@ main.o foo.o
===>
OBJS = main.o foo.o
myprog:$(OBJS)
gcc -o $@ $(OBJS)
http://wiki.kldp.org/KoreanDoc/html/GNU-Make/GNU-Make-7.html
.SUFFIXES : .c .o
CC = gcc
INC_DIRS = -I/../.. <- include 되는 헤더 파일의 패스를 추가한다. (대문자 I)
LIBS = -lname <- 링크할 때 필요한 라이브러리를 추가한다. (소문자 L)
LIB_DIRS = -L/../.. <- 라이브러리 패스 (대문자 L)
CFLAGS = -Wall -g $(INCS) <- 컴파일에 필요한 각종 옵션을 추가한다.
LDFLAGS =
OBJS = <- 목적 파일의 이름을 적는다.
SRCS = <- 소스 파일의 이름을 적는다.
SRCS = $(foreach dir, ., $(wildcard $(dir)/*.c))
SRCS := $(notdir $(SRCS))
OBJS = $(SRCS:.c=.o)
TARGET = <- 링크 후에 생성될 실행 파일의 이름을 적는다.
all : $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
or
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
dep :
gccmakedep $(INC) $(SRCS)
clean :
rm -rf $(OBJS) $(TARGET) core
new :
$(MAKE) clean
$(MAKE)
'프로그래밍 > 툴' 카테고리의 다른 글
Makefile 만들기 (0) | 2014.06.24 |
---|---|
gcc 툴체인 옵션 간단 정리 (0) | 2014.04.16 |
Windows 7 에서 user32.dll, kernel32.dll, gdi32.dll 의 위치 (0) | 2013.05.21 |
[wxWidgets] 설치 with mingw32-gcc (0) | 2011.12.17 |
lex 프로그램의 입력 문제 (0) | 2010.11.05 |