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)
image

2 修改makefile中定义变量值的示例

#使用override进行追加的变量的原来指定的值不会被命令行参数覆盖,而且会追加命令行指定的值
override CFLAGS += -g

all:
    @echo $(CFLAGS)
image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 来自陈浩的一片老文,但绝对营养。 示例工程:3 个头文件*.h,和 8 个 C 文件*.c。 初 编译过程,源文件...
    周筱鲁阅读 4,727评论 0 17
  • 使用变量 在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefil...
    Stan_Z阅读 2,154评论 0 11
  • @(linux 编程)[开发技能, 工具使用] What is GNU Make Make 是控制工程中通过源码生...
    orientlu阅读 11,383评论 0 26
  • 父母因为路的生气变得小心翼翼,甚至连电话都不敢给他打了。路呢,也陷入绝望中,把所有的心思都放到了工作中。 都说男子...
    空灵心阅读 153评论 0 0
  • 描述complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。...
    乔治大叔阅读 597评论 0 0