我几乎不知道有足够的makefile来破解其他人的makefile,有时甚至没有那么多。我目前的雇主有一个相当复杂的make环境,我在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)
你正在使用哪个版本的Make? (试试'make -v',看看它是怎么说的。) – Beta
它的GNU Make 3.81 – SDGator
注意:递归调用make时,你应该使用$(MAKE)而不是make:https://www.gnu.org/s/ hello/manual/make/MAKE-Variable.html –