1 makefile的概述【只针对Linux有效】

1.1 make

  • make是个命令,是可执行程序,用来解析makefile。(Linux自带)
  • GNU make是一种代码维护工具。
  • make工具会根据makefile文件定义的规则和步骤,完成整个软件项目的代码维护工作。
  • 一般用来简化编译工作,可以极大地提高软件开发的效率。
  • windows下一般由集成开发环境自动生成。
  • Linux下需要由我们按照语法自己编写。

1.2 makefile

  • makefile是个文件,这个文件中描述了咱们程序的编译规则。
  • 咱们执行make 命令的时候,make命令会在当前目录下找makefile文件。
  • 根据makefile文件里的规则,编译咱们的程序。

1.3 采用makefile的好处

  1. 简化编译程序的时候输入得命令,编译的时候只需要敲 make 命令就可以了。
  2. 可以节省编译时间,提高编译效率。

2 Makefile的语法规则

目标:依赖文件列表  
<tab>命令列表
  1. 目标:就是需要生成的文件。
  2. 依赖文件:通过依赖文件生成目标文件。
  3. 命令列表:实现将依赖文件生成目标文件。

make命令默认在当前工作目录下寻找名为GNUmakefilemakefileMakefile的文件。

3 makefile变量

3.1 自定义变量

变量名=变量值
取变量值  -->  $(变量名)
num=10
$(num)

3.2 系统环境变量

make会识别系统环境变量。

3.3 预定义变量

【嵌入式高级C语言】11:C语言Makefile-LMLPHP

【嵌入式高级C语言】11:C语言Makefile-LMLPHP

4 伪目标

.PHONY:clean
clean:
	rm -rf ***

5 最终版本Makefile

# 指定编译器  
CC=gcc  

# 目标文件  
TARGET=main  

# 获取 当前目录 所有的.c文件  
SRC=$(wildcard *.c)  

# 将所有的.c 转换成对应的.o  
OBJS=$(patsubst %.c, %.o, $(SRC))  

$(TARGET):$(OBJS)  
	$(CC) $^ -o $@  
	
%.o:%.c  
	$(CC) -c $< -o $@  
	
# 伪目标  
.PHONY:clean  
clean:  
	rm -rf *.o $(TARGET)
03-09 12:35