2017-12-01 11 views
0

markdown을 HTML로 변환하여 문서를 만들려면 다음과 같은 간단한 makefile이 있습니다. make_bookshelves.py이라는 스크립트가 여러 개의 markdown 파일을 만든 다음 모든 markdown 파일을 HTML로 변환해야합니다.실행 후 Makefile의 확장 변수

변수는 이전의 MD_FILES 변수가 스크립트가 실행되기 전에 기존 목록으로 설정됩니다. 따라서 해당 마크 다운 파일은 변수가 MD_FILES이 아니므로 변수가 HTML_FILES이 아니므로 무시됩니다.

make 두 번 실행하면 모든 markdown 파일이 make가 시작될 때 존재하기 때문에 모든 파일을 가져옵니다.

make_bookshelves.py 실행 후 MD_FILESHTML_FILES 변수를 다시 평가하는 방법이 있습니까?

재귀 적으로 make을 호출하려고 시도했지만 변수가 이미 설정되어 있기 때문에 문제가 해결되지 않습니다.

# $Id: Makefile 12980 2017-09-21 18:49:42Z nrp0238769 $ 

# A simple Makefile to build the UTE documentation from source 

MD_FILES := $(shell find src -name '*.md') 
HTML_FILES := $(addprefix html/,$(notdir $(MD_FILES:.md=.html))) 

make_docs: src/bookshelves/bookshelf.md $(HTML_FILES) 

html/%.html : %.md 
    md2html.py $< [email protected] --style-sheet=../css/mcs.css 

src/bookshelves/bookshelf.md: 
     ./make_bookshelves.py src 

답변

0

이 글을 쓰는 데 어려움을 겪었으므로 답을 나누겠다고 생각했습니다. 문제를 쓰면 대답이 나왔습니다.

문제는 := 과제를 사용하는 것이 었습니다. 이로 인해 MD_FILESHTML_FILES은 전달되지 않은 경우에만 설정됩니다. 해결책은 이것이다 :

MD_FILES = $(shell find src -name '*.md') 
HTML_FILES = $(addprefix html/,$(notdir $(MD_FILES:.md=.html))) 

그리고

make_docs: src/bookshelves/bookshelf.md 
    $(MAKE) $(HTML_FILES) 

이제 MD_FILESHTML_FILESmake_bookshelves.py를 실행 한 후 다시 평가받을

.