可以被执行两次的makefile

摘自 Linux Device Driver

 

# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE ),)
obj-m := hello.o
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif

 

 

利用了 ifneq 的作用。 开始make时,KERNELRELEASE 并没有定义,所以走的是下面的分支。

 

其中又 运行了 make。。。。, 这次又使用了一次make,这次KERNELRELEASE已经定义了。貌似这是ifneq 还是make的特性。

 

你可能感兴趣的:(Make,File)