You cannot see this page without javascript.

make - 06 make 규칙

Programing 조회 수 242 추천 수 0 2017.02.22 17:21:50

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

 

다음은 암시적 규칙의 예를 살펴본다.

 

makefile  < makefile 작성>
1: OBJ=main_test.o func1.o func2.o
2: test : $(OBJ)
3:    cc -o  $@ $^
4: clean:
5:    rm $(OBJ)

 


make를 실행하여 본다.

 

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

$  touch *
$  make
        cc -O -c main_test.c
        cc -O -c func1.c
        cc -O -c func2.c
        cc -o  test


대상 test를 생성하기 위해 make는 대상이 의존하는 파일들을 살피게 된다. 그러나 대상이 의존하는 main_test.o, func1.o, func2.o 가 존재하지 않기 때문에 make는 다시 main_test.o, func1.o, func2.o가 대상으로 있는 곳을 찾으려고 할 것이다. 그러나 make가 main_test.o, func1.o, func2.o가 있는 대상을 찾지 못하면 make의 동작이 중단될 것 같지만 위에서 보는 보와 같이 실제로 오류 없이 실행되는 것을 알 수 있다.

 

이는 make가 암시적 규칙에 따라 오브젝트 파일 main_test.o, func1.o, func2.o를 생성하기 위해, 이들이 의존하는 파일을 찾고 컴파일러 호출까지 수행하게 한다. 이를 make의 암시적 규칙이라 한다.

이러한 암시적 규칙은 다음과 같이 –p 옵션을 통하여 그 내용을 확인할 수 있다.

 

$  make -p
Macros:
OBJ = main_test.o func1.o func2.o
SHELL = /usr/bin/sh
…….
clean:
 commands:
        rm $(OBJ)
func2.o
func1.o
main_test.o
test:  (MAIN NAME)
 depends on: main_test.o  func1.o  func2.o
 commands:
        cc -o  $@ $^   …

엮인글 :
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
49 윈도우서버2008 - 06 (보안 정책 및 감사) file [10] LynX 2012-11-28 285
48 32bit Driver을 64bi로 설치하기 [8] LynX 2011-06-21 280
47 Windows 윈도우 8 pro key LynX 2014-05-26 277
46 CentOS CentOS7 WHEEL 계정 추가 file LynX 2017-02-03 274
45 Xpress Engine XML 쿼리 대신 직접 mysql 사용하기 LynX 2014-07-19 273
44 웹 프린트 작업시 픽셀과 밀리미터간의 상관관계 (1mm=3.8px ) [8] LynX 2013-03-15 271
43 Xyview DVR서버 연결 [8] LynX 2012-04-19 269
42 웹 페이지의 원하는 테이블만 프린트 LynX 2013-03-15 265
41 Network vpn LynX 2016-06-29 263
40 HardWare 라우터 기본설정 LynX 2013-09-28 259
39 HP Officejet 6500A (Plus) 호환 드라이버 [8] LynX 2012-05-16 257
38 윈도우7 알수없는장치 file [8] LynX 2012-03-13 250
37 Linux 하위 디렉토리 문자열 일괄검색,치환 LynX 2016-08-24 249
36 HardWare DCE 기본설정 LynX 2013-09-28 247
35 Programing make - 03 make의 사용 file LynX 2017-02-22 246
34 Windows Windows Server 2012 - .NET Framework 1.x 미지원 LynX 2014-05-29 246
33 Linux Apache httpd mod_evasive compile LynX 2016-08-22 244
» Programing make - 06 make 규칙 LynX 2017-02-22 242
31 Xpress Engine XE에 memcache 사용 설정 LynX 2016-09-23 242
30 Linux 리눅스 사용 기초 - 04 bash 셸 사용하기 LynX 2017-02-17 240

XE Login