Makefile에 대한 상세 정보는,
영문메뉴얼: http://www.gnu.org/software/make/manual/html_node/index.html#SEC_Contents
한글메뉴얼: http://korea.gnu.org/manual/4check/make-3.77/ko/make_1.html
기본구조 요약
-----------------------------------------------------------------------------------------------------
구성 요소: Target, Dependency, Command, Comments
Target : Dependency
Command
Target, Dependency: 파일명 (아니면 PHONY)
Command: 반드시 Tab 다음
Comments는,
#This comment will not be displayed.
#This comment will be displayed
ex)
hse_util.o : hse_util.c hse_util.h
gcc -c -o hse_util.o hse_util.c
----------------------------------------------------------------------------------------------
설명
Makefile의 주 구성요소는 'Target' Dependency' Command' 'Comments' 이다.
Target과 Dependency는 파일명을 지칭하는게 일반적인데, 만약 파일이 아니라면 PHONY라는 키워드로 지정해주는 게 좋다.
Command는 반드시 탭 다음에 와야한다. 즉, 해당 줄의 맨 처음에 바로 오는 것은 Target 혹은 주석(Comments)이 오고, 실제 명령어는 탭키를 쳐서 공백을 만들고 적어야 한다.
Comments(주석)을 달고 싶을 때는 '#'기호를 사용하면 되는데, 공백없이 #이 오면, Makefile이 수행될 때 이 주석자체가 안보이고, 공백을 두고 #을 사용하면 Makefile이 수행될 때 이 주석내용이 표출되게 된다.
gcc를 이용해서 C 소스를 컴파일하는 전형적인 구조를 보면 다음과 같다.
hse_util.o : hse_util.c hse_util.h
gcc -c -o hse_util.o hse_util.c
'hse_util.o'가 Target이다.
hse_util.c 와 hse_util.h가 Dependency가 되고,
"gcc -c -o hse_util.o hse_util.c"가 Command가 된다.
의미는, Target으로 되어 있는 hse_util.o파일이 Dependency로 되어 있는 hse_util.c hse_util.h 파일보다 out of date이면, Command인 "gcc -c -o hse_util.o hse_util.c"를 수행
변수사용에 대한 요약
- 대소문자 구분함
- 설정 방법: 변수명 = 값
- 사용 방법: $(변수명)
- 약속된 변수: $@ $< $^ (더많는 약속변수는 여기 참조)
$@ : target rule
$< : first dependency
$^ : all dependencies
ex)
CC = gcc
hse_util.o : hse_util.c hse_util.h
$(CC) -c -o $@ $<
-끝-
'프로그래밍 > 기타' 카테고리의 다른 글
gcc 주요 옵션 설명 (0) | 2016.11.25 |
---|---|
집에 웹서버 설치해서, 미디어위키로 홈페이지 만들기 (0) | 2014.10.02 |