在 GNU make if 语句中使用 grep
Use grep in a GNU make if-statement
第一:我是 linux 的新手,我已经很抱歉问了一个可能很愚蠢的问题。
我有一个将乳胶文本编译成 pdf 的 makefile。这会创建一个日志文件,我必须在该日志文件中搜索一个字符串,如果该字符串在日志文件中,则再次编译。
所以一切正常,直到我的 if 语句为止。
我正在尝试使用 grep 命令检查子字符串,但无法正常工作。
在我的解决方案中,即使子字符串不在我的日志文件中,也会执行 if 语句。
GREP_FINDINGS := $(shell grep 'undefhrined' linux-20.log)
all: clean linux-20.pdf
ifeq ($(GREP_FINDINGS),)
pdflatex linux-20
endif
linux-20.pdf:
pdflatex linux-20
bibtex linux-20
pdflatex linux-20
.PHONY: clean
clean:
echo Cleaning .aux .bbl .blg .log files
-rm -f *.aux *.bbl *.blg *.log *.pdf
echo Cleaning complete.
这个问题的某些部分让我感到不安(例如在第一次通过后 未定义 但在第二次或第三次之后一切正常?),但如果你're asking for is actually what you want, then I'd put the conditional inside the rule:
linux-20.pdf:
pdflatex linux-20
bibtex linux-20
pdflatex linux-20
!(grep undefined linux-20.log) || pdflatex linux-20
第一:我是 linux 的新手,我已经很抱歉问了一个可能很愚蠢的问题。
我有一个将乳胶文本编译成 pdf 的 makefile。这会创建一个日志文件,我必须在该日志文件中搜索一个字符串,如果该字符串在日志文件中,则再次编译。
所以一切正常,直到我的 if 语句为止。
我正在尝试使用 grep 命令检查子字符串,但无法正常工作。
在我的解决方案中,即使子字符串不在我的日志文件中,也会执行 if 语句。
GREP_FINDINGS := $(shell grep 'undefhrined' linux-20.log)
all: clean linux-20.pdf
ifeq ($(GREP_FINDINGS),)
pdflatex linux-20
endif
linux-20.pdf:
pdflatex linux-20
bibtex linux-20
pdflatex linux-20
.PHONY: clean
clean:
echo Cleaning .aux .bbl .blg .log files
-rm -f *.aux *.bbl *.blg *.log *.pdf
echo Cleaning complete.
这个问题的某些部分让我感到不安(例如在第一次通过后 未定义 但在第二次或第三次之后一切正常?),但如果你're asking for is actually what you want, then I'd put the conditional inside the rule:
linux-20.pdf:
pdflatex linux-20
bibtex linux-20
pdflatex linux-20
!(grep undefined linux-20.log) || pdflatex linux-20