从Makefile执行命令
考虑以下从Makefile执行命令,makefile,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
:
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
中。一般来说,make变量是make的内部变量,在make的递归调用中不可用
如果希望变量在子品牌中可用,则需要在子品牌的命令行上传递该变量,或者从父品牌导出该变量;后者将在调用子make时将其放入环境中
但是请注意,makefiles中的赋值会覆盖从环境中获取的值。因此,$(KDIR)/Makefile
在设置值之前需要小心地测试该值,如果设置了该值的话
顺便说一句,您不应该使用文本
make
调用递归make。始终使用变量<代码>$(MAKE)始终使用变量$(MAKE)。为什么必须使用MAKE
变量而不是MAKE-literal?几天前您不是已经在这里问过这个问题了吗?