2012-11-22 5 views
2

일부 유형을 저장하는 작업을 수행 할 때 m4을 사용하고 싶습니다. 따라서 루프가 반드시 필요할 것입니다. m4 doc을 읽을 때, 6 장에서 반복을 위해 6.46.5이 있습니다. 그러나 foreach은 내장 매크로 (Composite?)가 아니 어서 어떻게 사용할 수 있습니까? 예, 그들은 -I examples 옵션 및 include('foreach.m4')m4를 호출하지만,이 파일로 오류가 존재하지 보인다 :foreach와 같은 M4 합성 매크로 란 무엇입니까?

cannot open `foreach.m4': No such file or directory 

어떤 도움에 감사드립니다!

+0

명시 적으로 'foreach'를 제공하지 않거나 사용자가 직접 작성해야합니까? –

+0

아니요, 매뉴얼은 복합체를 제공합니다 (이론적 인 행동의 예와이를 호출하는 방법)'foreach'를 제공하지만 실제로는 foreach 구조체를 제공하지 않습니다. –

답변

2

당신은 -I의 인수로 전체 경로를 사용해야합니다 (또는 상대 경로,하지만 당신은 디렉토리를 지정해야합니다). examples 디렉토리는 항상 m4과 함께 설치되지는 않습니다 (RedHat와 함께 배포 된 m4-1.4.1 rpm에는 examples 디렉토리가 없습니다). 가장 간단한 방법은 m4 tarball의 압축을 풀고 사용하는 것입니다. (예를 들어, /tmp의 타르볼을 풀고 m4 -I/tmp/m4-1.4.11/examples 실행)

는 또한 -I는 M4에 대한 표준이 아닌 옵션이 있습니다, 그래서 당신은 실제로 인수를 지원 m4의 버전을 사용하고 있는지 확인하십시오. (예 : gnu-m4)

+0

감사합니다. 윌리엄! 이 배후에있는 합병점을 알고 싶습니다. –

+1

필자는 왜 그런지 잘 모르겠지만'm4'는'-' 이외의 다른 기본 디렉토리를 보지 않습니다.'-I'는 비표준이므로 아무 것도 해치지 않을 것입니다 패치를 보내면 해당 기능을 제공하는 gnu-m4에 패치를 제출하십시오. –

관련 문제