我想为LaTeX文档创建一个makefile(在这个最小的文件中)
例)。当没有文件“makeindexstyle.ist”时,应该创建它(通过
运行make makeindexstyle.ist)并用于格式化索引。规则
%.pdf
反映了这一点。但是,它还没有工作,我收到错误
ifneq (, ) {
/bin/sh: 1: Syntax error: word unexpected (expecting ")")
make: *** [master.pdf] Error 2
怎么了?
Parts from Makefile:
MASTER = master
TEX = slave
TEXI = texi2dvi -p
all: $(MASTER:=.pdf)
%.pdf: %.tex $(TEX:=.tex)
ifneq ($(wildcard makeindexstyle.ist), ) { # if makeindexstyle.ist exists, compile and build index
$(TEXI) $<
make makeindexstyle.ist
makeindex -c -s makeindexstyle.ist $(MASTER:=.idx)
}
endif
$(TEXI) $<
makeindexstyle.ist:
@(echo "...") > makeindexstyle.ist
更新: 我试图让它尽可能简单,看看错误来自哪里。除了其他内容(如引用),我试过这个:
%.pdf: %.tex $(TEX:=.tex)
exist := $(wildcard "absolute-path-to-makeindexstyle.ist")
ifneq ($strip $(exist)),)
echo "foo"
endif
$(TEXI) $<
但结果是
exists :=
make: exists: Command not found
make: *** [book.pdf] Error 127
答案 0 :(得分:2)
同时,我可以在shell方面解决它:
IDX = "makeindexstyle.ist"
%.pdf: %.tex $(TEX:=.tex)
@if test -f $(IDX); then \
echo "foo"; \
fi
$(TEXI) $<
答案 1 :(得分:-1)
这听起来像是How do I check if file exists in Makefile?或How to conditional set up a Makefile variable by testing if a file exists的副本。
尝试
ifneq ($(wildcard makeindexstyle.ist),)
没有空间。或者,在参数周围抛出""
?