makefile文件详解
Posted 五个板栗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了makefile文件详解相关的知识,希望对你有一定的参考价值。
1.1个规则
目标:依赖条件
命令(命令前有一个tab的缩进)
终极目标一般写在第一行,不然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
clean没有依赖,rm前加-,作用是删除不存在文件时,不报错,顺序执行结束
3.个自动变量
- $@:在规则的命令中,表示规则中的目标
- $^:表示规则的命令中,表示所有的依赖条件
- $<:表示规则的命令当中,表示第一个依赖条件,如果将该变量应用在模式规则中,它将依赖条件列表
- 依次取出,套用模式规则。
make clean -n 可以查看你删的对不对
4.模式规则
%.o:%.c
gcc -c $< -o %@
静态模式规则
$(obj)%.o:%.c
gcc -c $< -o %
5.伪目标
.PHONY:clean ALL
当.c和.0及.h分别再src、obj、inc等目录下时
- 一般命名 makefile 或者 Makefile,直接使用make命令
- 如果命名为其他名字,可以使用make -f 文件名 -f:指定文件执行make命令
以上是关于makefile文件详解的主要内容,如果未能解决你的问题,请参考以下文章
Makefile项目管理-----在Linux下编译c/c++程序
Openssh升级报错,终极解决方法附原因,Your OpenSSL headers do not match your library. 编译Openssh时报错,生成MakeFile文件时报错