반응형
[ make ]
정의:
-make는 각 파일 간의 종속 관계를 파악해 기술 파일(Makefile)에 기술된 대로 컴파일 명령이나 쉘 명령을 순차적으로 내린다.
-make는 각 파일에 대한 반복적 명령을 자동화 시켜 개발자의 수고를 덜고, 시간을 절약할 수 있다.
<기본동작>
makefile 내용
all : diary #(1)
diary : memo.o calendar.o main.o #(2)
gcc -W -Wall –o diary memo.o calendar.o main.o #(3)
memo.o : memo.c #(4)
gcc -w -Wall -c -o memo.o memo.c #(5)
calendar.o : calendar.c (6)
gcc -w -Wall -c -o calendar.o calendar.c #(7)
main.o : main.c #(8)
gcc -w -Wall -c -o main.o main.c #(9)
clean :
rm - rf *.o diary
순서:
1-2
-4-5-2
-6-7-2
-8-9-2-3-1
make 명령 시,
GNUmakefile, makefile, Makefile 순으로 기술 파일을 찾음.
<기본구조>
CC = gcc #(매크로정의)
target1 : dependency1 dependency2 #(룰1)
command1 #(명령)
command2
target2 : dependency3 dependency4 dependency5 #(룰2)
command3
command4
<규칙>
1. 명령의 시작은 반드시 tab으로 시작.
target1 : dependency1 dependency2
command1
2. 비어있는 행은 무시됨.
target1 : dependency1 dependency2
command1
3. #을 만나면 개행 문자를 만날 때까지 무시함.
target1 : dependency1 dependency2 #주석
command1
#주석
4. 기술 행이 길어지면 \를 사용해 이을 수 있다.
target1 : dependency1 dependency2\
dependency3
5. ;는 명령라인을 나눌 때 사용함.
target1 : dependency1 dependency2; command1
6. 종속 항목이 없는 타겟도 사용 가능.
target1 : command1
7. 명령 부분에는 어떤 명령이 와도 상관 없음.
<매크로>
-기술 파일 내의 매크로:
사용자 정의 변수에 특정한 문자열을 정의하고 표현하는 것을 의미.
*매크로는 좀 더 일관되고 좀 더 이식성이 높고 융통성 있는 기술 파일을 만들기 위해 필요하다.
(예제)
CC = gcc
CFLAGS = -W -Wall
TARGET = diary
all : $(TARGET)
$(TARGET) : memo.o calendar.o main.o
$(CC) $(CFLAGS) –o $(TARGET) memo.o calendar.o main.o
memo.o : memo.c
$(CC) $(CFLAGS) -c -o memo.o memo.c
calendar.o : calendar.c
$(CC) $(CFLAGS) -c -o calendar.o calendar.c
main.o : main.c
$(CC) $(CFLAGS) -c -o main.o main.c
clean :
rm - rf *.o $(TARGET)
반응형
'프로그래밍 > CS' 카테고리의 다른 글
[자료구조] [C] 퀵 정렬 (quick sort) (0) | 2020.12.23 |
---|---|
[자료구조] [C] 사람 이름 사전적 순서 정렬하는 DoubleLinkedList 이중연결리스트 (0) | 2020.12.23 |
[유닉스] gdb 디버거 정리 (0) | 2020.12.23 |
[유닉스] gcc 컴파일 정리 (0) | 2020.12.23 |
[유닉스 이론과 실습] 7장 실습 (0) | 2020.12.23 |