COMMON= D_FF
all :
ncverilog $(COMMON).v
test1:
COMMON=T_FF
ncverilog $(COMMON).v
test2:
COMMON=JK_FF_tb
ncverilog $(COMMON).v
test3:
COMMON=JK_FF
ncverilog $(COMMON).v
我只想用局部变量替换全局变量,但它不起作用。如果我调用“make test1
”,它仍然只替换“COMMON=D_FF
”而不是“{{1} }”。
答案 0 :(得分:3)
你问题中的makefile的格式都混淆了。看起来您的makefile可以像这样重写:
COMMON = D_FF
test1 : COMMON = T_FF
test2 : COMMON = JK_FF_tb
test3 : COMMON = JK_FF
all test1 test2 test3 :
ncverilog $(COMMON).v
答案 1 :(得分:0)
make
是一种声明性语言,其范围规则几乎与您习惯的编程语言完全不同。 COMMON
不是一个“全局”,因为恰好有一种(稍微例外)的方式来设置特定于目标的变量(参见Reinier的回答)。