makefile文件详解

Posted 五个板栗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了makefile文件详解相关的知识,希望对你有一定的参考价值。

1.1个规则

目标:依赖条件
命令(命令前有一个tab的缩进)

makefile文件详解_后缀

终极目标一般写在第一行,不然make会把第一行当作终极目标,比如你的第一行是add.o:add.c,就会把它当成终极目标,只执行gcc -c add.c -o add.o就结束了,这时候只需要在开头加上all(All):a.out,或者在make的时候加上你的终极目标。

  • 如果想生成目标,检查规则中的依赖条件是否存在,如果不存在,则寻找是否有规则用来生成该依赖文件。
  • 检查规则中的目标是否需要更新,必须先检查它的所有依赖,依赖中有任意一个被更新,则目标必须更新。

2.2个函数

  • src=$(wildcard *.c) ​找到当前目录下所有后缀为.c的文件,赋值给src
  • obj=$(patsubst %.c,%.o,$(src))​把src变量里所有后缀为.c的文件替换为.o,将参数3中,包含参数1的部分,替换为参数2

makefile文件详解_赋值_02

clean没有依赖,rm前加-,作用是删除不存在文件时,不报错,顺序执行结束

3.个自动变量

  • $@:在规则的命令中,表示规则中的目标
  • $^:表示规则的命令中,表示所有的依赖条件
  • $<:表示规则的命令当中,表示第一个依赖条件,如果将该变量应用在模式规则中,它将依赖条件列表
  • 依次取出,套用模式规则。

makefile文件详解_后缀_03

make clean -n  可以查看你删的对不对

makefile文件详解_文件名_04

4.模式规则

%.o:%.c

     gcc -c $< -o %@

静态模式规则

$(obj)%.o:%.c

      gcc -c $< -o %

5.伪目标

.PHONY:clean ALL

makefile文件详解_赋值_05

当.c和.0及.h分别再src、obj、inc等目录下时

makefile文件详解_文件名_06

  • 一般命名 makefile 或者 Makefile,直接使用make命令
  • 如果命名为其他名字,可以使用make -f 文件名 -f:指定文件执行make命令

以上是关于makefile文件详解的主要内容,如果未能解决你的问题,请参考以下文章

Makefile详解

Makefile项目管理-----在Linux下编译c/c++程序

Linux中makefile项目管理

Openssh升级报错,终极解决方法附原因,Your OpenSSL headers do not match your library. 编译Openssh时报错,生成MakeFile文件时报错

Yuchuan_Linux_C编程之六 Makefile项目管理

uboot下主Makefile详解