【ARM 嵌入式 编译 Makefile 系列 9 - Makefile (“:=”,“ +=”, “?=”,“=” | CFLAGS|常见自动变量)详细介绍】


请阅读【ARM GCC Makefile 编译专栏导读】

Makefile 不同赋值符号学习

在 Makefile 中,:=+=?=以及=是用来赋值的运算符。

= 这是最基本的赋值运算符。在等号两边的空格将被忽视。它将右边的字符串赋给左边的变量。如果右边的值中包含了变量,这些变量将被展开为需要的值。例如:

VAR = value

这将把字符串"value"赋给变量VAR

:=:这也是一个赋值运算符,但它在赋值时会立即展开右边的变量。例如:

VAR := $(foo)

这将把foo的当前值(在:=运算符处)赋给VAR

+=:这个运算符用于将右边的字符串追加到左边的变量的值后面。如果变量之前没有定义,+=就和=一样。例如:

VAR = value VAR += another_value

这将把字符串"another_value"追加到VAR的值后面,所以最终VAR的值将是"value another_value"。

?=:这个运算符只有在变量未定义时才进行赋值。如果变量已经定义,无论是空还是非空,那么?=都不会赋值。例如:

VAR ?= value

这将把字符串"value"赋给VAR,但只有在VAR未定义时才会这样。

以上就是对:=,+=,?=,=这四个赋值运算符的简单介绍和示例。


Makefile中常见自动变量

命令格式 | 含 义
$* : 不包含扩展名的目标文件名称;
$+ : 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件;
$< : 第一个依赖文件的名称;
$? : 所有时间戳比目标文件晚的依赖文件,并以空格分开 ;
$@ : 目标文件的完整名称;
$^ : 所有不重复的依赖文件,以空格分开;
$% : 如果目标是归档成员,则该变量表示目标的归档成员名称。

Makefile CFLAGS 介绍及使用

CFLAGS是用于C编译器的选项的Makefile变量。CFLAGS变量通常包含应用于C编译器的标志,如优化级别,警告级别等。

例子1
你可以设置CFLAGS来打开所有警告并启用所有优化:

CFLAGS=-Wall -O2

在这个例子中,-Wall选项告诉编译器生成所有警告,-O2选项告诉编译器使用第二级优化。当然,CFLAGS可以设置为你需要的任何值。

例子2:
在Makefile中你可以通过宏定义来控制源程序的编译。只要在Makefile中的CFLAGS中通过选项-D来指定你于定义的宏即可。
如:

CFLAGS += -D KK

CFLAGS += -D KK=XX

例子3:
在Makefile中使用CFLAGS的例子如下:

CC=gcc CFLAGS=-I. helloworld: main.o hello.o $(CC) -o helloworld main.o hello.o $(CFLAGS)

在这个例子中,CFLAGS被设置为-I.,-I选项的作用是指定包含文件的搜索路径,.表示在当前目录下搜索。

在命令$(CC) -o helloworld main.o hello.o $(CFLAGS)中,使用了$(CFLAGS)变量。这条命令的意思是,使用gcc编译器将main.ohello.o链接成名为helloworld的可执行文件,链接时使用CFLAGS中指定的选项。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公CodingCos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值