2

我想在运行特定命令后包含另一个生成文件,因为第一个命令会生成该生成文件。我试过这个

debug2:
    cd bench/${BENCH};  verilator --cc top.v
    include ${BENCH_DIR}/Vtop_classes.mk

在这种情况下,make 无法识别包含命令并给出错误“make: include: Command not found”

如果我尝试在不包含选项卡的情况下包含,那么它会在执行上一个命令之前包含,因此会生成没有此类文件的错误

debug2:
    cd bench/${BENCH};  verilator --cc top.v
include ${BENCH_DIR}/Vtop_classes.mk
4

2 回答 2

1

添加 - 之前:-include ${BENCH_DIR}/Vtop_classes.mk

于 2013-03-16T20:43:10.790 回答
0
INCLUDED-FILES=MakeA MakeB

-include $(INCLUDED-FILES)
# alternatively use sinclude
generate-makefile:
    touch MakeA
    touch MakeB

clean: generate-makefile
    if [ -a MakeA ]; then make clean-A; else echo "No file: MakeA. Run make again."; fi;
    if [ -a MakeB ]; then make clean-B; else echo "No file: MakeB. Run make again."; fi;

GNU make 不会因为-include. 当 make 运行延迟规则并且包含的​​文件不存在时,shell 会打印一条消息“再次运行 make”。示例调用中的延迟规则第二次生成,所以不会报错。

因为-include不报错,make第一次运行就可以运行生成规则。第二次运行时解决了依赖关系。

于 2017-09-03T16:26:04.370 回答