Makefile make:ifneq:word意外中出错(应为“意外”)

Makefile make:ifneq:word意外中出错(应为“意外”),makefile,Makefile,我想为LaTeX文档创建一个makefile(在这种情况下) 示例)。当没有文件“makeindexstyle.ist”时,应该(通过 运行makeMakeIndexStyle.ist)并用于格式化索引。规则 %.pdf反映了这一点。但是,它还没有工作,我收到了错误 ifneq (, ) { /bin/sh: 1: Syntax error: word unexpected (expecting ")") make: *** [master.pdf] Error 2 怎么了 Parts fro

我想为LaTeX文档创建一个makefile(在这种情况下) 示例)。当没有文件“makeindexstyle.ist”时,应该(通过 运行makeMakeIndexStyle.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

这听起来像是或的复制品

试一试


没有空间。或者,围绕参数抛出

,同时,我可以在shell端解决它:

IDX = "makeindexstyle.ist"
%.pdf: %.tex $(TEX:=.tex)
    @if test -f $(IDX); then \
        echo "foo"; \
    fi
    $(TEXI) $<
IDX=“makeindexstyle.ist”
%.pdf:%.tex$(tex:=.tex)
@如果测试-f$(IDX);然后\
呼应“福”\
fi
$(特克斯)$<

谢谢,Quuxplusone。我知道这两个环节(以及许多其他环节)。然而,这并不能解决问题。我还尝试了引用(尽管我认为没有必要),如下所述:。还是不走运。我将很快发布一个更新,但也失败了,也许这揭示了我在这里的错误思维方式。
exists := 
make: exists: Command not found
make: *** [book.pdf] Error 127
ifneq ($(wildcard makeindexstyle.ist),)
IDX = "makeindexstyle.ist"
%.pdf: %.tex $(TEX:=.tex)
    @if test -f $(IDX); then \
        echo "foo"; \
    fi
    $(TEXI) $<