美文网首页
Make 中的自动变量

Make 中的自动变量

作者: GTMYang | 来源:发表于2025-06-06 23:37 被阅读0次

在 Makefile 中,$@$< 等是自动变量(Automatic Variables),用于简化规则编写。以下是常用符号参数的说明:


1. 常用自动变量

变量 含义 示例(规则中)
$@ 当前规则的目标文件名 foo.o: foo.c$@ = foo.o
$< 第一个依赖文件名 foo.o: foo.c bar.h$< = foo.c
$^ 所有依赖文件列表(去重) foo.o: foo.c bar.h$^ = foo.c bar.h
$+ 所有依赖文件列表(不去重) 若依赖重复出现(如 foo.o: foo.c foo.c),则保留重复
$? 比目标更新的依赖文件列表 仅列出已修改且目标需要重新构建的依赖
$* 匹配通配符 % 的部分(茎) %.o: %.c$* = 文件名(不含扩展名)

2. 其他常用符号

符号 含义
$(VAR) 引用变量 VAR 的值
${VAR} 同上,兼容不同语法
$$ 转义为单个 $(用于 Shell 脚本)
# Makefile 中的注释符号
% 通配符(模式规则)
* / ? 文件名通配符(类似 Shell)

3. 示例

# 编译所有 .c 文件为 .o 文件
%.o: %.c
    gcc -c $< -o $@  # $< = %.c, $@ = %.o

# 链接目标文件
app: main.o utils.o
    gcc $^ -o $@     # $^ = main.o utils.o, $@ = app

# 仅处理已修改的依赖
update: lib.a
    cp $? /backup    # $? = 仅更新的文件

4. 注意事项

  1. 大小写敏感:自动变量必须用 $ 开头,且为小写(如 $@ 正确,$@ 错误)。
  2. 特殊字符转义:在 Shell 命令中使用 $ 需写为 $$(例如 echo $$PID)。
  3. 模式规则% 是通配符,$* 是其匹配的部分。

掌握这些符号能大幅提升 Makefile 的编写效率!

相关文章

  • makefile入门三

    九、模式变量 在GNU的make中,还支持模式变量(Pattern-specific Variable),通过上面...

  • Laravel杂项

    从服务容器解析对象 make 如果调用不了$app变量,可以使用辅助函数app或者App Facedes: 自动注...

  • IOS Block 你需要知道的15个重点内容

    1.Block 中的变量 会被block截获 保存该自动变量的瞬间值,所以在block中改写该自动变量的值也不会影...

  • block

    block是C语言的扩充功能。带有自动变量的匿名函数 截获自动变量值保存该自动变量的瞬间值 block语法表达式中...

  • Makefile中 = 与 := 的区别

    1、“=” make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中...

  • SpringBoot 热部署

    一、开启idea自动make功能 1、CTRL + SHIFT + A --> 查找make project au...

  • Makefile 使用说明

    一、make 是啥? make 是软件构造工具,通过读取 Makefile文件自动化完成构建。 二、make 核心...

  • 3. __block  __weak  __strong   这

    1.1 局部变量 局部自动变量,在Block中可被读取。Block定义时copy变量的值,在Block中作为常量使...

  • 从make到gradle,浅谈自动化构建工具

    Gnu Make 说起自动化构建工具,不得不提make【1】。make有着悠久的历史。1977年,斯图亚特·菲尔德...

  • Block实现原理

    Block是带有自动变量值的匿名函数; 带有自动变量值在Block中表现为截获自动变量值; 自动变量值截获只能保存...

网友评论

      本文标题:Make 中的自动变量

      本文链接:https://www.haomeiwen.com/subject/undbwjtx.html