2
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只是替换“”而不是“ COMMON=T_FF”。

4

2 回答 2

4

您问题中的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
于 2012-07-12T06:55:13.747 回答
0

make是一种声明性语言,并且具有几乎与您习惯的编程语言不同的范围规则。 COMMON与其说是“全局”,不如说是碰巧有一种(稍微例外的)方法来设置特定于目标的变量(参见 Reinier 的回答)。

于 2012-07-13T01:45:40.037 回答