1)= := ?= +=的区别
:=直接赋值 ?=上文没有赋值则赋值,有则不赋值 +=追加赋值
ARCH ?=
CROSS_COMPILE ?=
CC := $(CROSS_COMPILE)gcc
AR := $(CROSS_COMPILE)ar
2)反引号用于执行shell命令,例
LIBLORAGW_VERSION := `cat ../VERSION`
3)总Makefile调用子Makefile, -e 用于覆盖子Makefile变量,-C 指定子目录路径,例
all: libtools libloragw packet_forwarder util_net_downlink util_chip_id
libtools:
$(MAKE) all -e -C $@
libloragw: libtools
$(MAKE) all -e -C $@
packet_forwarder: libloragw
$(MAKE) all -e -C $@
util_net_downlink: libtools
$(MAKE) all -e -C $@
util_chip_id: libloragw
$(MAKE) all -e -C $@
参考