美文网首页
makefile 2023-06-15

makefile 2023-06-15

作者: 9_SooHyun | 来源:发表于2023-06-14 10:38 被阅读0次

Makefile 基本结构

Makefile的基本结构包括三个部分:目标(Target)、依赖(Dependencies)和命令(Commands)

Target:Dependencies
    Commands
  • 目标(Target):指需要生成的文件名。它可以是任意文件,可以是一个对象文件(Object File),也可以是一个可执行文件(Executable File)
  • 依赖(Dependencies):指生成目标文件所依赖的源文件。
    • 如果Makefile同级目录下不存在目标文件,则一定会执行目标编译
    • 如果Makefile同级目录下已经存在目标文件,则对比目标文件和依赖文件的最后更新时间。任一依赖文件比目标文件更新时,执行一次目标编译
  • 命令(Commands):值生成目标文件所需要执行的shell命令。这些命令必须以Tab字符开始。
    • 注意:如果Commands执行完毕后不生成Target,那么每次 make 该 Target 时,都会重新执行Commands(因为目标文件不存在)。我们把这类target称为“伪目标”。即:每一次make都会重新构建“伪目标”。
      伪目标可以直接使用.PHONY声明,如.PHONY : clean表示,clean是一个伪目标,即使Makefile同级目录下存在名为clean目标文件,make clean都将执行一次新的 target 为 clean 的 构建

Makefile 变量

变量在声明时需要给予初值,而在使用时,需要给在变量名前加上 $符号,但最好用小括号 () 或是大括号 {} 把变量给包括起来。如果你要使用真实的 $ 字符,那么你需要用 $$ 来表示

变量可以使用在许多地方,如规则中的“目标”、“依赖”、“命令”以及新的变量中。先看一个例子:

objects = program.o foo.o utils.o
program : $(objects)
    cc -o program $(objects)

$(objects) : defs.h

变量会在使用它的地方精确地展开,就像C/C++中的宏一样,例如:

foo = c
prog.o : prog.$(foo)
    $(foo)$(foo) -$(foo) prog.$(foo)

展开后得到:

prog.o : prog.c
    cc -c prog.c

一些约定的变量:
$@:编译目标
$<:依赖列表中的第一个依赖对象
$^:依赖列表中的所有对象
$?:依赖文件列表中所有有更新的文件

相关文章

  • 编写Makefile及简单分析

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

  • Makefile 工程管理

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

  • win_c/c++ mess01

    1. win makefile 1.1 win makefile,eg: 1.2 makefile explai...

  • [C] Makefile

    Makefile Blog [Makefile的简便写法] [Makefile]菜鸟教程 [gcc编译声明问题] ...

  • 迅为IMX6ULL开发板Ubuntu下C编程入门(二)

    本文是介绍3.3 初识 Makefile+3.4Makefile语法 3.3初识Makefile 3.3.1什么是...

  • Make

    make 目标 顶层 Makefile 作为入口, 来调用其他 makefile, 顶层 makefile 一般有...

  • Makefile学习笔记

    Makefile学习笔记 学习Makefile的资料 《跟我一起写makefile》 《GUN make manu...

  • Linux Kernel Makefiles特殊符号

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

  • makefile入门一

    Linux下Makefile详解 下面就来看如何写Makefile文件:Makefile文件编写规范: 下来看事例...

  • Makefile

    Makefile for boot Makefile Makefile对格式有要求:每一行文本除非顶头开始,如果需...

网友评论

      本文标题:makefile 2023-06-15

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