我几乎不知道足够的makefile东西来破解其他人的makefile,有时甚至没那么多。我现在的雇主有一个相当复杂的制作环境,我在makefile中添加了几个目标,主要是自我记录我需要的所有开关。 (可能有更好的方法来做到这一点......如果有,请告诉我!!)
无论如何,第一个目标按预期工作。第二个目标与第一个目标相同,只是BENCH赋值在结尾处有一个“2”。否则,它的确切调用。在执行期间的某个时刻,BENCH变量用于创建目录。 第一个目标按预期创建目录。第二个目标使用默认的BENCH名称而不是传递给它的名称来创建目录。不知何故,它在命令行中丢失了变量设置,即使几乎相同的语法适用于第一个目标。
为什么在调用自身时会丢失变量设置?我缺少一些微妙的东西吗?这甚至是一件有效的事吗?
comp_gate_oct04_ff:
make clean all BENCH=GATE_OCT04_FF SIMULATOR=NC SIM_64BIT=1 CORNER=FF NETLIST=oct04 | tee all_gate_oct04_ff.log
@tail all_gate_oct04_ff.log | mail -s "Compile for GATE_OCT04_FF is complete" $(SMS_ADDR) $(USER)
comp_gate_oct04_ff2:
make clean all BENCH=GATE_OCT04_FF2 SIMULATOR=NC SIM_64BIT=1 CORNER=FF NETLIST=oct04 | tee all_gate_oct04_ff2.log
@tail all_gate_oct04_ff2.log | mail -s "Compile for GATE_OCT04_FF2 is complete" $(SMS_ADDR) $(USER)
答案 0 :(得分:0)
我不明白为什么你会收到这个错误,我无法重现它。尝试更简单的事情:
comp_gate_oct04_ff:
make foo BENCH=GATE_OCT04_FF
comp_gate_oct04_ff2:
make foo BENCH=GATE_OCT04_FF2
foo:
@echo BENCH is $(BENCH)
告诉我们这是怎么回事,我们会从那里开始。
修改:
好吧,我们把问题减半了。现在试试这个:
comp_gate_oct04_ff:
make clean
make all BENCH=GATE_OCT04_FF SIMULATOR=NC SIM_64BIT=1 CORNER=FF NETLIST=oct04
comp_gate_oct04_ff2:
make clean
make all BENCH=GATE_OCT04_FF2 SIMULATOR=NC SIM_64BIT=1 CORNER=FF NETLIST=oct04