我有一行makefile:
parser_yacc.h parser_yacc.c : parser_yacc.y
bison -y -d parser_yacc.y && mv y.tab.h parser_yacc.h && \
mv y.tab.c parser_yacc.c
现在我有几个依赖于parser_yacc.h的其他行。当我执行make
时,一切运行正常。但是,当我运行make -j4
时,我总是收到此警告:
mv: cannot stat `y.tab.c': No such file or directory
据我所知,make尝试同时构建parser_yacc.c
和另一个需要parser_yacc.h
的文件;从而产生两次命令
bison -y -d parser_yacc.y && mv y.tab.h parser_yacc.h && \
mv y.tab.c parser_yacc.c
导致第二次崩溃......我怎么能绕过这个问题?
答案 0 :(得分:1)
您可以单独为任一目标重写规则(例如.c),并添加另一条规则来完成另一个目标。
parser_yacc.c : parser_yacc.y
bison -y -d parser_yacc.y && mv y.tab.c parser_yacc.c
parser_yacc.h : parser_yacc.c
mv y.tab.h parser_yacc.h