2013-07-03 2 views
0

안녕하세요. 저는 현재 GNU Make를 사용하고 있으며 내 대상 중 하나는 그림과 같습니다.GNU Make "gsrc/% .v : % .rdl"파일 생성

gsrc/%.v: %.rdl 
      run tool on the .rdl 

이 도구는 gsrc/example.v, example.vh, 그리고 (일반적으로 내 현재 작업 디렉토리에)를 example.xml 파일을 생성합니다. example.v 파일을 대상 정의에서 gsrc 디렉토리로 이동합니다. 생성 된 모든 파일이 gsrc 디렉토리로 이동하는 방법을 파악하려고합니다.

먼저 gsrc/% .v가 생성 된 파일을 gsrc 디렉토리로 이동시키고, 그렇다면 어떻게 .vh와 .xml을 make를 사용하여 동일한 디렉토리에 넣을 수 있습니까?

고마워요

답변

2

만들기 지금까지 어디서든 파일을 이동하지 않습니다. 당신이라는 이름의 파일 gsrc/example.v을 구축하고자 할 때이 <run some command>을 실행할 수 있으며,이 명령은 해당 파일을 생성 및/또는 업데이트합니다 있는지 확인 말하는 것

gsrc/%.v : %.rdl 
     <run some command> 

: 당신은 같은 규칙을 작성하는 경우. 그 조리법 내용은 이어야합니다.은 파일을 모두 업데이트하고 이동해야합니다. make는 당신을 위해 그것을하지 않습니다. 당신이 원하는 경우

그래서, 당신의 출력은 gsrc로 이동합니다하지만 당신은 실행 명령은 다음 방금 이동하는 레시피에 더 많은 물건을 추가 할 수 있습니다, 거기에 넣어하지 않습니다

gsrc/%.v gsrc/%.vh gsrc/%.xml: %.rdl 
     <run some command> 
     mv $*.vh $*.xml gsrc 
+1

나는 가리켜 야합니다 오류 처리에 대해 정말 까다 롭다면 할 일이 훨씬 더 많아서 일이 실패하면이 규칙이 제대로 정리됩니다. 그러나 이것은 당신이 원하는 것의 99 %를 할 것입니다. – MadScientist

+0

완벽을 기하기 위해 여분의 것들을 확장 할 수 있습니까? –

+1

"어떤 명령"이 실제로 무엇인지에 대한 세부 사항 없이는 알기가 어렵지만 명령을 실행하기 전에'rm -f gsrc/$ * .v gsrc/$ * '와 같이 출력을 지우고 싶을 수도 있습니다 .vh gsrc/$ *. xml'. 그런 다음'mv' 명령은 일부 파일 만 이동하여 실패 할 수 있습니다. 실패하면 모두 삭제할 수 있습니다 (그러나 오류 코드로 종료하는 것을 잊지 마라. make는 작동하지 않는다는 것을 안다.)). "일부 명령"이 실패하면 정리를 원할 수 있습니다. 그러나 우리는 그것이 무엇인지 모르기 때문에 확신하기 어렵습니다. – MadScientist