makefile之override


override指示符

通常在執行 make 時,如果通過命令行定義了一個變量,那么它將替代在 Makefile中出現的同名變量的定義。
就是說,對於一個在 Makefile 中使用常規方式(使用“=”、“:=”或者“define”)定義的變量,我們可以在執行 make 時通過命令行方式重新指定這個變量的值,命令行指定的值將替代出現在 Makefile 中此變量的值。
如果不希望命令行指定的變量值替代在 Makefile 中的變量定義,那么我們需要在 Makefile 中使用指示符“override”來對這個變量進行聲明。

override作用

  1. 保護makefile中定義的變量的值;
  2. 提供一種在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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM