override指示符
通常在執(zhí)行 make 時(shí),如果通過(guò)命令行定義了一個(gè)變量,那么它將替代在 Makefile中出現(xiàn)的同名變量的定義。
就是說(shuō),對(duì)于一個(gè)在 Makefile 中使用常規(guī)方式(使用“=”、“:=”或者“define”)定義的變量,我們可以在執(zhí)行 make 時(shí)通過(guò)命令行方式重新指定這個(gè)變量的值,命令行指定的值將替代出現(xiàn)在 Makefile 中此變量的值揩抡。
如果不希望命令行指定的變量值替代在 Makefile 中的變量定義,那么我們需要在 Makefile 中使用指示符“override”來(lái)對(duì)這個(gè)變量進(jìn)行聲明。
override作用
- 保護(hù)makefile中定義的變量的值;
- 提供一種在makefile中增加或者修改命令行參數(shù)的方式;
實(shí)際情況下,我們經(jīng)常會(huì)有這種需求:通過(guò)命令行指定一些附加的參數(shù)選項(xiàng),對(duì)于一些通用的參數(shù)選項(xiàng)在makefile中指定.
1 保護(hù)makefile中定義變量值示例
1.1 沒(méi)有使用override的情況
make命令行指定的變量值將會(huì)覆蓋makefile中定義的同名的變量值
SRCS := A.c B.c C.c
all:
@echo "SRCS: " $(SRCS)
1.2 使用override的情況
make命令行指定的變量值將不會(huì)覆蓋makefile中定義的同名的變量值冒版,所以override有保護(hù)makefile中變量值不被命令行參數(shù)修改的作用。
override SRCS := A.c B.c C.c
all:
@echo "SRCS: " $(SRCS)
image
2 修改makefile中定義變量值的示例
#使用override進(jìn)行追加的變量的原來(lái)指定的值不會(huì)被命令行參數(shù)覆蓋,而且會(huì)追加命令行指定的值
override CFLAGS += -g
all:
@echo $(CFLAGS)
image