02- 初识 makefile 的结构

1. makefile中元素的含义

  • makefile 用于定义源文件之间的依赖关系
  • makefile 说明如何编译各个源文件并生成可执行文件

在这里插入图片描述

targets : 	
  - 通常是需要生成的目标文件名
  - make 所需执行的命令名称

prerequisities :
  - 当前目标所依赖的其它目标或文件

command :
  - 完成目标所需要执行的命令

规则中的注意事项:

  • targets 可以包含多个目标,使用空格对多个目标进行分隔
  • prerequisites 可以包含多个依赖,使用空格对多个依赖进行分隔
  • [ Tab( \t ) ] 键,每一个命令必须以 [ Tab] 字符开始,[ Tab] 字符告诉 make 此行是一个命令行
  • 续行符 [ \ ] 可以将内容分开写到下一行,提高可读性

2. makefile 依赖

依赖规则:

  • 当目标对应的文件不存在时,执行对应命令
  • 当依赖在时间上比目标更新,执行对应命令
  • 当依赖关系连续发生时,对比依赖链上的每一个目标

依赖示例

all : test
	echo "make all"

test :
	echo "make test"
	
# 将上述 Demo 保存至 makefile 文件中,执行 make找打顶层目标 all ,all 依赖 test ,由于 test 文件不存在,test 目标下面的命令,接着执行 all 下面的命令

小技巧:makefile 中可以在命令前加上 @ 符,作用为命令无回显

3. makefile 编程案例

makefile文件Demo:

hello,out : main.o func,o
	gcc -o hello.out main.o func.o

main.o : main.c
	gcc -o main.o -c main.c
	
func.o : func.c
	gcc -o func.o -c func.c

在这里插入图片描述

小技巧:工程开发中可以将最终可执行文件名 和 all 同时作为 makefile 中第一条规则的目标,这样当生成的 可执行文件名已经最新,我们仍然可以使用 make all 强制执行

hello,out all : main.o func,o
	gcc -o hello.out main.o func.o

4. 总结

  • makefile 用于定义源文件之间的依赖关系
  • makefile 说明如何编译各个源文件并生成可执行文件
  • makefile 中的目标之间存在连续依赖关系
  • 依赖存在并且命令执行成功是目标完成的必要条件
发布了123 篇原创文章 · 获赞 31 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_40794602/article/details/105429131