8.7.1 Makefile 인 스 턴 스 - 프로젝트 의 총 Makefile

3504 단어 Linux/make
제8 장 Makefile 파일 을 구축 합 니 다. Makefile 은 스 크 립 트 프로 그래 밍 언어 에 해당 합 니 다. 사용 자 는 Makefile 을 작성 하 는 과정 에서 변수, 제어 구조 문, 함수 등 일반 프로 그래 밍 언어의 특성 을 사용 할 수 있 고 셸 명령 도 수행 할 수 있 습 니 다.Makefile 이 탄생 한 본질 적 인 목적 은 자동화 컴 파일 을 실현 하 는 것 이기 때문에 Makefile 은 다른 프로 그래 밍 언어 와 구별 되 는 가장 큰 특징 은 컴 파일 된 파일 의 의존 관계 에 의 해 작 동 된다 는 것 이다.이 장 에 서 는 Makefile 을 만 드 는 방법 을 자세히 소개 할 것 입 니 다.이 절 은 프로젝트 의 총 Makefile 인 스 턴 스 를 소개 합 니 다.
AD:
8.7  Makefile 인 스 턴 스
이 절 은 독자 들 이 Makefile 에 대한 이 해 를 강화 하기 위해 두 개의 Makefile 인 스 턴 스 를 보 여 줍 니 다.이 장 에서 언급 된 Makefile 작성 지식 을 실례 를 통 해 정리 합 니 다.
8.7.1  Makefile 인 스 턴 스 - 프로젝트 의 총 Makefile
어떤 항목 의 소스 코드 가 모듈 별로 여러 디 렉 터 리 에 저 장 될 경우, 각 모듈 의 디 렉 터 리 에는 각각 Makefile 파일 이 있 습 니 다.원본 프로그램 에 저 장 된 디 렉 터 리 구 조 는 다음 과 같다.
프로젝트 디 렉 터 리 는 다음 과 같 습 니 다: 
hello (디 렉 터 리)  include (디 렉 터 리)  목록 (디 렉 터 리)  Makefile (Makefile 파일) 
프로젝트/hello 디 렉 터 리 는 다음 과 같 습 니 다. 
hello. c (소스 코드 파일)  Makefile (Makefile 파일) 
프로젝트/include 디 렉 터 리 는 다음 과 같 습 니 다. 
hello. h (헤더 파일)  list. h (헤더 파일) 
프로젝트/list 디 렉 터 리 는 다음 과 같 습 니 다. 
list. c (소스 코드 파일)  Makefile (Makefile 파일) 
디 렉 터 리 에 있 는 Makefile 파일 을 각각 쓸 수 있 습 니 다.이 Makefile 을 사용 하면 모든 원본 파일 을 컴 파일 하고 실행 가능 한 프로그램 을 만 들 수 있 습 니 다.이 Makefile 에 서 는 셸 프로 그래 밍 의 사상 을 참고 하여 많은 셸 명령 을 사용 하여 Makefile 이 작업 을 수행 하 는 데 도움 을 주 었 습 니 다.
(1) vi 편집기 에서 hello 디 렉 터 리 의 Makefile 파일 을 편집 하면 다음 과 같 습 니 다.
프로그램 목록 8 - 36  hello 디 렉 터 리 의 Makefile 파일 
hello: hello.o  # hello 생 성 
    gcc hello.o -o hello  
hello: hello.c  # hello. o 생 성 
    gcc -c hello.c  
clean:  
    rm -rf hello *.o  
.PHONY: clean 
(2) vi 편집기 에서 list 디 렉 터 리 의 Makefile 파일 을 편집 하면 다음 과 같 습 니 다.
프로그램 목록 8 - 37  list 디 렉 터 리 의 Makefile 파일 
list: list.o    # 생 성 목록 
    gcc list.o -o list  
list.o: list.c  # list. o 생 성 
    gcc -c list.o  
clean:  
    rm -rf list *.o  
.PHONY: clean 
프로젝트 디 렉 터 리 에 있 는 Makefile 파일 을 작성 해 야 합 니 다. 이 Makefile 파일 을 실행 하면 모든 하위 디 렉 터 리 에 있 는 Makefile 파일 을 자동 으로 실행 할 수 있 습 니 다.그 내용 은 다음 과 같 습 니 다. 독자 들 은 셸 스 크 립 트 에 따라 이 Makefile 파일 을 이해 할 수 있 습 니 다.
(3) vi 편집기 에서 procject 디 렉 터 리 의 Makefile 파일 을 편집 하면 다음 과 같 습 니 다.
프로그램 목록 8 - 38  프로젝트 디 렉 터 리 의 Makefile 파일 
SUBDIRS := list hello                       # 하위 디 렉 터 리 
all : modules  
.PHONY:all  
modules:  
\# 모든 폴 더 에 들 어가 서 폴 더 의 Makefile 을 실행 합 니 다. 
    for dir in $(SUBDIRS);do make -C $$dir || exit 1;done      
.PHONY:modules  
clean:  
\# 모든 폴 더 에 들 어가 Makefile 의 clean 을 호출 합 니 다. 
    for dir in $(SUBDIRS);do make -C $$dir clean;done  
.PHONY: clean 
(4) 이 Makefile 파일 을 실행 합 니 다.
$make -s 
(5) 현재 하위 디 렉 터 리 마다 파일 변화 상황 을 봅 니 다.
$ls ./hello  
hello  hello.c  hello.o  Makefile  
$ls ./include:  
hello.h  list.h  
$ls ./list:  
list  list.c  list.o  Makefile 
(6) 이 Makefile 파일 을 다시 실행 하지만 이번 에는 clean 목 표를 수행 합 니 다. 
$make -s clean 
(7) 현재 하위 디 렉 터 리 마다 파일 변화 상황 을 다시 봅 니 다.
$ls ./hello  
hello  hello.cMakefile  
$ls ./include:  
hello.h  list.h  
$ls ./list:  
list  list.c  Makefile 


  • FROM:  http://book.51cto.com/art/201503/470223.htm

    좋은 웹페이지 즐겨찾기