美文网首页编译构建辅助工具
makefile笔记-规则测试

makefile笔记-规则测试

作者: Mark_Liu | 来源:发表于2019-06-03 17:59 被阅读0次

以这个简单的makefile文件为列

# 生成可执行文件main
main:main.o
    cc -o main main.o
# 生成main.o对象文件
main.o:main.c
    cc -c main.c
# 清除指令,删除执行过程中生成的文件

# 伪目标
.PHONY:clean

clean:
    rm main main.o

规则格式

target...:prerequisites...
<tab> command
  • target :目标
  • prerequisites:依赖文件
  • command:命令

1.探究target和prerequisite的作用

  1. 执行 make main.o
    • 运行日志 cc -c main.c
    • 生成了main.o 文件
  2. 再次执行make mian.o
    • 运行日志'main.o' is up to date,已经是最新了的
  3. 修改main.c文件后
    • 运行日志 cc -c main.c
    • 生成了main.o 文件
  4. 修改makefile文件为
main.o:
    cc -c main.c
  1. 执行 make mian.o
    • 运行日志 cc -c main.c
    • 生成了main.o 文件
  2. 执行 make mian.o
    • 运行日志 cc -c main.c
    • 生成了main.o 文件
      6.修改makefile文件为
main:main.c
    cc -c main.c
  • 执行结论和 4,5 的结果一样

结论

  1. 当target为目标生成文件的名称时,makefile会将目标名称对应的文件和依赖的文件进行最后修改时间对比,来判断是否需要执行命令生成新的文件,避免重复执行
  2. 不设置依赖文件或target名不是目标文件名 ,不影响target指令的执行

2.伪目标的问题

一些博客上说伪目标的做用是不生成目标文件

以上面clean目标为列

  • .PHONY:clean 代码时,执行make clean
    • 执行了删除指令,没有生成clean文件
  • 删除.PHONY:clean代码后,执行命令,也没有clean文件

结论

  1. 伪目标没有什么作用
  2. target名称本身不会产生文件,不是目标文件名时,仅充当方法名的作用

3.关于隐晦规则

  1. 删除一下代码
main.o:main.c
    cc -c main.c
  1. 执行 make
    • 日志cc -c -o main.o main.c
    • 日志cc -o run main.o

结论
C 编译过程中,有.o文件依赖时,如果没有显性规则生成.o文件,makefile会自动补全.o 的生成命令


ps:如有问题 欢迎交流 愿与君共勉


相关文章

  • makefile笔记-规则测试

    以这个简单的makefile文件为列 规则格式 target :目标 prerequisites:依赖文件 com...

  • Makefile自动化变量

    学习笔记,摘自陈皓的《跟我一起写 Makefile》 Makefile规则 Makefile文件由一系列规则构成。...

  • Makefile 工程管理

    Ⅰ Makefile的用途 Ⅱ Makefile的构成 Ⅲ Makefile构成-----规则 Ⅳ Makefil...

  • 编写Makefile及简单分析

    makefile的好处:一次编写,终身受益 makefile的命名规则: makefile Makefile ma...

  • makefile笔记-隐含规则

    隐含规则是make预先设定好的一些规则 取消隐含规则 make的参数“-r”或“--no-builtin-rule...

  • makefile相关

    Makefile的规则 在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。 tar...

  • Makefile学习笔记——3.Makefile规则

    1.前言 在Makefile中,规则描述了用什么命令生成一个文件,该文件被称为规则的目标,生成"目标"的方式就是规...

  • Linux Kernel Makefiles特殊符号

    Makefile基本规则: Makefile文件中可使用特殊的符号简化Makefile文件的书写。 1、$@:表示...

  • 004-Makefile 总述

    一、Makefile 里有什么? Makefile 里主要包含了五个东西:显示规则、隐晦规则、变量定义、文件指示和...

  • makefile规则

    首先我们通过实例来理解makefile的规则创建两个文件:a.c b.c,在a中调用b函数func_b 这时候我...

网友评论

    本文标题:makefile笔记-规则测试

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