override指示符
通常在執行 make 時,如果通過命令行定義了一個變量,那么它將替代在 Makefile中出現的同名變量的定義。
就是說,對於一個在 Makefile 中使用常規方式(使用“=”、“:=”或者“define”)定義的變量,我們可以在執行 make 時通過命令行方式重新指定這個變量的值,命令行指定的值將替代出現在 Makefile 中此變量的值。
如果不希望命令行指定的變量值替代在 Makefile 中的變量定義,那么我們需要在 Makefile 中使用指示符“override”來對這個變量進行聲明。
override作用
- 保護makefile中定義的變量的值;
- 提供一種在makefile中增加或者修改命令行參數的方式;
實際情況下,我們經常會有這種需求:通過命令行指定一些附加的參數選項,對於一些通用的參數選項在makefile中指定.
1 保護makefile中定義變量值示例
1.1 沒有使用override的情況
make命令行指定的變量值將會覆蓋makefile中定義的同名的變量值
SRCS := A.c B.c C.c
all:
@echo "SRCS: " $(SRCS)
1.2 使用override的情況
make命令行指定的變量值將不會覆蓋makefile中定義的同名的變量值,所以override有保護makefile中變量值不被命令行參數修改的作用。
override SRCS := A.c B.c C.c
all:
@echo "SRCS: " $(SRCS)

2 修改makefile中定義變量值的示例
#使用override進行追加的變量的原來指定的值不會被命令行參數覆蓋,而且會追加命令行指定的值
override CFLAGS += -g
all:
@echo $(CFLAGS)

