[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8. 파일 삽입

m4는 입력중에 어떤 위치에서던 특정한 파일을 포함할 수 있다.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8.1 파일을 삽입하기

m4에서 파일을 삽입하는 내장 매크로는 2개가 있다.

 
include(filename)
sinclude(filename)

둘다 filename의 파일을 읽어들인다. 파일의 끝에 다다랐다면 입력은 이제 이전의 입력파일로 가정된다.

includesinclude의 확장은 따라서 filename의 속 내용이 된다.

파일을 include하는 과정에서 파일이 없으면 에러가 생긴다. 에러메시지를 보지 않으려면 sinclude를 사용하라. 만일 존재한다면 확장되고 그렇지 않으면 아무것도 확장되지 않는다.

 
include(`no-such-file')
⇒
error-->30.include:2: m4: Cannot open no-such-file: No such file or directory
sinclude(`no-such-file')
⇒

incl.m4’가 다음과 같은 내용을 가지고 있다고 가정하자.

 
Include file start
foo
Include file end

보통은 파일을 삽입하는 것은 파일의 속 내용을 현재의 입력 스트림으로 삽입 하는 것이다. 파일의 내용은 읽혀지고 파일내용은 매크로 호출로 확장될 것이다.

 
define(`foo', `FOO')
⇒
include(`incl.m4')
⇒Include file start
⇒FOO
⇒Include file end
⇒

사실, includesinclude는 파일의 내용으로 확장되는 데, 이것은 보통 파일 전체에서 매크로를 정의하기 위해서 사용한다. 예를들면, 여기에서 ‘bar’는 ‘incl.m4’로 확장된다.

 
define(`bar', include(`incl.m4'))
⇒
This is `bar':  >>>bar<<<
⇒This is bar:  >>>Include file start
⇒foo
⇒Include file end
⇒<<<

이러한 include의 사용은 파일이 인용문자와, 쉼표, 괄호를 포함할 수 있는 만큼 간단치 않다. 때로는 m4가 구문 분석 작업을 하는 데 방해가 될 수도 있는 것 이다.

내장 매크로 includesinclude는 인자가 있을 때에만 인식된다.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8.2 삽입할 파일 검색하기

GNU m4 에서는 현재 디렉토리가 아닌 다른 디렉토리에서 삽입할 파일을 찾는 것을 허용한다.

파일 이름이 절대경로를 포함하지 않고, 현재 작업디렉토리에서 보이지 않는다면, 파일은 특별한 패스를 검색한다. 먼저, 명령행에서 ‘-I’ 옵션으로 기술한 곳을 찾는다. 두 번째로, ‘M4PATH’ 환경변수가 설정되어 있다면 그 순서대로 검색할 것이다. ‘M4PATH’ 의 내용은 콜론으로 구분된 디렉토리 리스트를 포함하는 것이다.

파일 삽입시 자동 검색으로 문제점이 발생한다면, ‘p’ 디버깅 플래그로 이러한 문제점을 억제할 수 있는 도움을 받을 수 있다 (see section 디버깅 출력을 제어하기).


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Autobuild on July 5, 2010 using texi2html 1.82.