3
我正在使用makefile來構建我的flex/bison項目。我遇到問題,因爲它正在添加對yacc
和mv
命令的調用,從而覆蓋我的一個文件。添加意外的mv命令
[email protected] ~/calc ±master⚡ » make clean
rm -rf lex.yy.c calc.tab.h calc.tab.c calc
[email protected] ~/calc ±master » make
bison -d calc.y
flex calc.lex
g++ -o calc calc.tab.c lex.yy.c calc.c
[email protected] ~/calc ±master⚡ » make clean
rm -rf lex.yy.c calc.tab.h calc.tab.c calc
[email protected] ~/calc ±master » touch calc.y
[email protected] ~/calc ±master » make
bison -d calc.y
flex calc.lex
yacc calc.y
mv -f y.tab.c calc.c
g++ -o calc calc.tab.c lex.yy.c calc.c
... Failure ...
我簡化了makefile到最低限度來重現這一點。使用野牛創建兩個文件:calc.tab.c
和calc.tab.h
。我沒有.h文件作爲目標,因爲我不確定正確的方法是什麼。對野牛的調用將生成calc.tab。*文件,因此這不是我主要關心的問題。
什麼是正確的方式來構建這個生成文件,以避免生成調用yacc和mv?
calc: calc.tab.c lex.yy.c calc.c
g++ -o calc calc.tab.c lex.yy.c calc.c
calc.tab.c: calc.y
bison -d calc.y
lex.yy.c: calc.lex calc.tab.h
flex calc.lex
clean:
rm -rf lex.yy.c calc.tab.h calc.tab.c calc
有道理。我不知道隱含的規則。謝謝。 – user1657033