-
文件命名: makefile 或 Makefile
-
规则:
-
一个Makefile文件中可以有一个或多个规则
目标 ...: 依赖 ...
命令(shell命令)
...
-
目标: 最终生成的文件
-
依赖: 生成目标所需要的文件或者目标
-
命令: 通过执行命令对依赖操作生成目标(命令前必须tab缩进)
-
-
命令在执行之前, 需要先检查规则中的依赖是否存在
-
检测更新, 在执行规则中的命令时, 会比较目标和依赖文件的时间
-
自定义变量 : 变量名=变量值
var=hello
; 获取变量:$(var)
-
预定义变量:
- AR: 归档维护程序的名称, 默认ar
- CC: C编译器的名称, 默认cc
- CXX: C++编译器名称, 默认g++
- $@: 目标的完整名称
- $<: 第一个依赖文件的名称
- $^: 所有依赖文件
-
函数:
$(wildcard PATTERN...)
- 获取指定目录下指定类型的文件列表
- 参数:PATTERN 指的是某个或多个目录下的对应的某种类型的文件,如果有多个目录,一般使用空格间隔
- 返回:得到的若干个文件的文件列表,文件名之间使用空格间隔
- 示例:
$(wildcard *.c ./sub/*.c)
返回值格式:a.c b.c c.c d.c e.c f.c
$(patsubst <pattern>,<replacement>,<text>)
- 查找
中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式 ,如果匹配的话,则以 替换。 - 返回:函数返回被替换过后的字符串
- 示例:
$(patsubst %.c, %.o, x.c bar.c)
返回值格式:x.o bar.o
- 查找
示例:
target = main
src = $(wildcard *.c)
objects = $(patsubst %.c,%.o,$(src))
CC = gcc
CPPFLAGS = -I ./
$(target): $(objects)
$(CC) -o $@ $^
%.o: %.c
$(CC) -g -c $< $(CPPFLAGS)
.PHONY: clean
clean:
rm -f $(objects) $(target)
标签:文件,%.,04,...,CC,Makefile,依赖,Linux
From: https://www.cnblogs.com/anqwjoe/p/16793181.html