2009-06-14 10 views
0

빌드의 일부로 여러 HTML 파일 (장당 하나의 파일)을 생성하는 DocBook 파일을 처리하고 있습니다.알려진 디렉토리에있는 알려지지 않은 파일에 대한 메이크 파일 의존성 (DocBook 용)

그 HTML 파일을 후 처리하고 다른 곳에 복사하려고합니다. 이 파일들은 DocBook 소스에 의존하지만, 나는 파일 이름을 미리 알 수 없다 (파일 이름은 DocBook 소스에 너무 의존한다).

내가 정렬의 작품 파일이 이미 생성 된 경우 규칙이있어 :

www/manual/%.html: build/manual/%.html 
    postprocess "$<" "[email protected]" 

을하지만 나는 그들이 아직이있는 경우,이를 생성하는 make에게하는 방법을 모르겠어요. www/manual/index.html에 대한 규칙을 추가하면 해당 파일 만 포스트 프로세싱됩니다.

DocBook 또는 아마도 멋진 와일드 카드 트릭을 사용하려면 makedepend이 필요합니다. 이것에 대한 해결책은 무엇입니까?

답변

1

저는 여기서 맹목적으로 GNU Make로 가정 할 것입니다; 그렇지 않은 경우 유사한 기술이 약간 변경된 구문과 함께 적용되어야합니다. 그것은 나를라면

, 나는 wildcard function

에 의해 생성 된 파일 목록을 아마도 위의 당신에 가깝다 규칙을 사용하십시오 그리고 나는, 별도의 하위 메이크에서 해당 규칙을 넣어 것 called recursively

메인 메이크에서,

, 메이크가 생성 된 HTML 파일의 전체 목록을 볼 것이다


    build: 
    # do the docbook processing 
    $(MAKE) -f htmlprocessmakefile 

.

0

"manual 디렉토리에 파일이 전혀 없으면 foo 명령을 실행하여 생성하십시오"와 같은 규칙을 작성하려고합니까?

고급 메이크 파일 사용법을 알지 못하고 불필요하게 배우는 시간을 투자하지 말라는 해킹 가능성이있는 한 가지 쉬운 방법은 지정된 foo 명령이 사용자가하지 않는 파일 이름을 만들지는 않을 것입니다 사전에 알고있을뿐만 아니라 미리 파일 이름을 알고있는 하나의 파일 (아마도 비어있는 파일)을 만들고 규칙을 실행했는지 여부에 대한 마커로 사용할 수 있습니다.

+0

필자는 예상 할 수있는 index.html에 대한 추가 규칙을 시도했지만 명시 적으로 명명 된 다른 파일의 후 처리는 트리거하지 않습니다. – Kornel

+0

나는 두 가지 규칙이 필요하다고 생각했다 : 1) 당신이 물어 본 세대 또는 전처리를위한 규칙; 2) 와일드 카드를 사용하고 디렉토리의 모든 파일을 사후 처리하는 사후 처리 규칙. 전처리를위한 규칙은 잘 알려진 index.html의 존재 여부에 달려 있다고 제안했다. (그리고 index.html이 존재하지 않으면 규칙은 그것을 생성해야하고 다른 모든 html 파일도 생성해야한다). 나는 첫 번째 규칙을 만드는 것이 왜 (와) 변경되지 않은 두 번째 규칙 (와일드 카드를 사용하는지, 후 처리하는지, ... – ChrisW

+0

... 및 sort-of-works)에 영향을 줄지는 모르겠다. 어떤 사전적인 이유로 첫 번째 규칙을 만들고 실행하면 두 번째 규칙의 동작이 깨지는 경우 두 번째 규칙을 별도의 메이크 파일로 실행하는 데 차이가 있습니까? – ChrisW