makefile符号释疑

在makefile文件中,@$符号代表什么意思?  

2010-07-08 12:28:00|  分类: 嵌入式linux|字号 订阅

archclean:
          @$(MAKEBOOT)   clean
或者
checkbin:
          @   /bin/ture
          @   true
这里面
@$和@代表着什么意思啊?

 

$(MAKEBOOT)     是变量   MAKEBOOT   的值,
@表示在make时不输出make的信息(类似Windows下的echo   off)。

 

makefile文件出现“ARCH := arm”,请问“:=”代表什么意思??

我正在看vivi的makefile文件,其中有一句是:
[b]ARCH := arm[/b]
请问那个":="符号代表什么意思哦?
我只知道在makefile文件里面,使用变量时,是用的"="这个符号。


那这里的":="是什么意思呢?

 

re

:= ,=,?=的区别
:=不递归赋值
=  递归赋值
?=默认值

 

“:=” 的意思是,它右边赋得值如果是变量,只能使用在这条语句之前定义好的,而不能使用本条语句之后定义的变量;
于此对应的是“=”,当它的右边赋值是变量时,这个变量的定义在本条语句之前或之后都可以
而“?=”是指,该符号左边的变量,如果在本条语句之前没有定义过,则执行本语句,如果已经定义,那么本语句什么都不做

### Makefile符号使用教程 #### 1. 基本赋值操作符 `=` 和 `:=` 在 Makefile 中,`=` 是递延变量定义的方式。当右侧表达式被引用时才会计算其值。 ```makefile VAR = $(OTHER_VAR) ``` 而 `:=` 则用于立即展开变量,在定义时就计算并存储结果[^2]。 ```makefile VAR := value of OTHER_VAR at this point ``` #### 2. 条件赋值 `?=` 如果左侧变量未设置,则采用等号右边的默认值;已设定则保持原样不变。 ```makefile DEBUG_FLAGS ?= -g ``` 此命令表示如果没有指定调试标志,默认启用 `-g` 编译选项。 #### 3. 变量追加 `+=` 向已有变量后面附加新内容,常用来累加编译器参数或其他列表项。 ```makefile CFLAGS += -O2 ``` 这会在现有 CFLAGS 后面加上优化级别 2 的标记。 #### 4. 行继续符 `\` 允许将一条指令拆分成多行书写,提高可读性和维护性。 ```makefile OBJS = main.o \ utils.o \ parser.o ``` 上述代码创建了一个对象文件列表 OBJS,其中包含了多个目标文件名。 #### 5. 文件通配符 `*` 和 `%` - `*` 匹配任意长度字符序列; - `%` 类似于模式匹配中的占位符,通常配合 `.c.o:` 这样的规则来处理源码到目标文件之间的转换关系。 例如: ```makefile %.o: %.c $(CC) -c $< -o $@ ``` 这里定义了一条通用规则,说明如何由 .c 源程序生成对应的 .o 对象文件。 #### 实际应用案例 考虑如下简单的 Makefile 片段展示这些符号的实际运用情况: ```makefile # 设置编译器和链接器 CC = gcc LD = gcc # 定义源文件目录和输出路径 SRCDIR = src OBJDIR = obj BINDIR = bin # 收集所有的 .c 文件作为源文件集合 SOURCES = $(wildcard $(SRCDIR)/*.c) # 将源文件转为目标文件(.o),并将它们放置在 OBJDIR 下 OBJECTS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o, $(SOURCES)) all: program program: $(OBJECTS) $(LD) -o $(BINDIR)/$@ $^ ../$(OBJDIR)/%.o : $(SRCDIR)/%.c @$(CC) -c $< -o $@ clean: rm -f $(OBJECTS) $(BINDIR)/* ``` 这段脚本展示了如何利用各种特殊符号构建一个完整的项目构建流程,包括自动收集源文件、制定编译策略以及清理工作区等功能[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值