달력

42025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

'Make'에 해당되는 글 1건

  1. 2008.06.04 make

make

C 2008. 6. 4. 19:44

# Make의 실행
$ make [-f makeFileName] (Default : makefile)

# makefile 예제
test : main_test.o func1.o func2.o
cc –o test main_test.o func1.o func2.o
main_test.o : io.h main_test.c
cc –c main_test.c
func1.o : io.h func1.c
cc –c func1.c
func2.o : io.h func2.c
cc –c func2.c

 $ make    (실행 결과)
cc –c main_test.c
cc –c func1.c
cc –c func2.c
cc –o test main_test.o func1.o func2.o

# 특정 파일 수정 명령 touch
$ touch func1.c

# Label 대상
clean :    (레이블 대상)
rm main_test.o func1.o func2.o

$ make clean
rm main_test.o func1.o func2.o

# 매크로 정의
 대소문자는 구분하지 않으며 대문자를 일반적으로 사용한다.

<형식> M_NAME=value

<사용> $( M_NAME)

Ex)
<makefile>
OBJ=main_test.o func1.o func2.o
Test : $(OBJ)
cc –o test $(OBJ)
main_test.o : io.h main_test.c
cc – c main_test.c
func1.o : io.h func1.c
cc –c func1.c
func2.o : io.h func2.c
cc –c func.c
clean :
rm $(OBJ)

# 내부 매크로
$@  현재의 목표 파일(Target) 이름
$*  확장자가 없는 현재의 목표 파일(Target) 이름
$<  현재 필수 조건 파일중 첫번째 파일의 이름
$?   현재 대상보다 최근에 변경된 필수 조건 파일 이름
$^  현재 모든 필수 조건 파일들

<makefile>
OBJ=main_test.o func1.o func2.o
test : $(OBJ)
cc –o $@$(OBJ)
main_test.o : io.h main_test.c
cc –c $<
func1.o : io.h func1.c
cc –c $*.c
func2.o : io.h func2.c
cc –c $*.c
clean:
rm $(OBJ)

# make 규칙
1. 명시적 규칙(Explicit Rules)
Make 파일을 작성할 때 컴파일에 필요한 각 처리단계와 의존성을 분명히 지정하여 make를 처리하는 것을 명시적 규칙(explicit rules)이라 한다.
2. 암시적 규칙(Inference Rules)
Make가 미리 정의된 규칙을 이용해 make 파일을 단순화시키는 규칙을 암시적 규칙이라 한다.

<makefile> - 암시적 규칙의 예
OBJ=main_test.o func1.o func2.o
test : $(OBJ)
cc –o $@$^
clean:
rm $(OBJ)

암시적 규칙은 –p 옵션을 통하여 그 내용을 확인할 수 있다.
$ make –p

# 접미사 규칙
<makefile>
OBJ=main_test.o func1.o func2.o
test : $(OBJ)
cc –o $@$(OBJ)
.c.o:
cc - $(CFLAGS)$<
clean:
rm $(OBJ)

$(CFLAGS)를 이용하여 디버깅 옵션을 주려면 다음과 같이 한다.
$ make CFLAGS=”-g”
cc –c –g main_test.c
cc –c –g func1.c
cc –c –g func2.c
cc –o test

'C' 카테고리의 다른 글

[함수] memcmp - 메모리 비교  (0) 2008.10.15
gcc 컴파일 옵션  (0) 2008.07.16
[함수] sprintf - 출력  (0) 2008.05.16
[함수] memcpy - 메모리카피  (0) 2008.05.16
[함수] scanf - 문자입력받기  (0) 2008.05.15
Posted by 알 수 없는 사용자
|