다음과 같은 상황이 있다고 가정해 보겠습니다.Makefile
include config.mk
# Generate summary table.
results.txt : $(ZIPF_SRC) isles.dat abyss.dat last.dat
$(ZIPF_EXE) *.dat > $@
# Count words.
.PHONY : dats
dats : isles.dat abyss.dat last.dat
%.dat : books/%.txt $(COUNT_SRC)
$(COUNT_EXE) $< $*.dat
.PHONY : clean
clean :
rm -f *.dat
rm -f results.txt
모든 변수는 다음에서 정의됩니다.config.mk
LANGUAGE=python
COUNT_SRC=countwords.py
COUNT_EXE=$(LANGUAGE) $(COUNT_SRC)
ZIPF_SRC=testzipf.py
ZIPF_EXE=$(LANGUAGE) $(ZIPF_SRC)
생성하기 위해 include
모든 행을 확장할 수 있는 도구가 있습니까 ? 현재 그러한 도구가 없다면 이를 달성하기 위한 스크립트를 작성할 수 있습니까?makefile
bigMakefile
python/perl/awk/bash
답변1
이것getline에 대한 GNU Awk 매뉴얼다음은 거의 완벽한 예입니다.
예를 들어, 다음 프로그램은 을 제외한 모든 입력 파일을 출력에 복사합니다
@include filename
. 이러한 레코드는 filename 파일의 내용으로 대체됩니다.{ if (NF == 2 && $1 == "@include") { while ((getline line < $2) > 0) print line close($2) } else print }
include
대신에 일치하도록 수정하면 됩니다 @include
.