make가 해야하는 일은 makefile에서 정의한다..
makefile은 규칙들의 모임이다..
규칙의 기본형태 다음과 같다(command 앞에는 반드시 탭문자 하나가 온다)
target... : dependencies...
command
.
.
.
target 은 다른 target 의 dependencies가 될 수 있다..
다른 target 의 dependencies나 다른 target을 dependencies로 갖지 않는
target을 phony target 이라고 한다.
makefile에서는 변수를 사용할 수있다..
정의방법
object = main.o kbd.o command.o display.o
사용방법
$(object)
변수의 사용은 원래값(문자열)을 대치한다.
make는 목적화일에 대한 묵시적 추론 규칙이 있다...
main.o : main.c def.h command.h
cc -c main.o main.c
위와 같이 정의된 규칙은 묵시적 추론규칙을 고려하면 다음과 같이 작성할 수 있다..
main.o : def.h
makefile을 target에 대한 dependencies의 리스트를 나열하는 방법외에...
각dependency에 의존하는 target들을 나열하는 방법이 있다..
main.o kbd.o command.o files.o display.o : def.h
main.o disply.o : command.h
.phony target 설명...
clean:
rm edit $(objects)
예견하지 못한 상황들을 처리하기 위해서 어쩌면 좀 더 복잡한 방법으로 규칙을 쓰려고 할련지도 모른다.
.PHONY : clean
clean :
-rm edit $(objects)
이것은 make가 `clean'이라고 불리는 실제 파일에 의해서 혼동되어지는 것을 막고 rm으로부터의 에러들에도 불구하고 그것이 계속되도록 한다.
이것과 같은 규칙은 makefile의 맨처음에 위치하면 안된다.
왜냐면 우리는 그것이 디폴트로 실행되기를 원하지 않기 때문이다!
clean이 어떤target의 dependency가 아니기 때문에, 이 규칙은 우리가 `make'명령에게 매개변수를 주지 않는다면, 전혀 실행되지 않을 것이다.
이 규칙이 실행되도록 하기 위해서는 `make clean'이라고 입력해야 한다
///편집중
댓글 없음:
댓글 쓰기