从Makefile执行命令执行

时间:2014-01-11 14:03:14

标签: makefile

考虑以下Makefile

CURRENT = $(shell uname -r) 
KDIR = /lib/modules/$(CURRENT)/build 
PWD = $(shell pwd) 
TARGET1 = md1 
TARGET2 = md2 
TARGET3 = md3 
obj-m   := $(TARGET1).o $(TARGET2).o $(TARGET3).o 
default: 
        make -C $(KDIR) M=$(PWD) modules 

当前Makefile中声明的变量是否来自$(KDIR)/Makefile

1 个答案:

答案 0 :(得分:1)

可能不是。通常,make变量是make的内部变量,并且在make的递归调用中不可用。

如果您希望变量在sub-make中可用,则需要在子make的命令行上传递它,或者从父make中传递它export;后者会在调用sub-make时将它放在环境中。

但请注意,makefile中的赋值会覆盖从环境中获取的值。因此$(KDIR)/Makefile在设置之前需要小心测试值,如果是的话。

顺便说一句,你永远不应该使用文字make调用递归make。 始终使用变量$(MAKE)