我有这个非常基本的示例 Makefile 用于编译 lex yacc 项目。
all: y.tab.o lex.yy.o
lex.yy.c: calc.l
#flex calc.l
y.tab.c y.tab.h: calc.y
#bison -d calc.y
lex.yy.o: lex.yy.c y.tab.h
#gcc -c lex.yy.c
y.tab.o: y.tab.c
#gcc -c y.tab.c
但是,当我运行 make 时,我看到 bison 被调用了两次。我假设每个目标 y.tab.c 和 y.tab.h 都有一次。
#bison -d calc.y
#gcc -c y.tab.c
#flex calc.l
#bison -d calc.y
#gcc -c lex.yy.c
这会导致并行构建出现问题。如何修改 makefile 以使依赖项与上述相同,但仅调用一次 bison 即可生成两个目标文件。