Linux下的Makefile的构建_gcc

Makefile简介
Linux下的Makefile的构建_gcc_第1张图片

Linux下的Makefile的构建_gcc_第2张图片
Makefile的本质:无论多么复杂的语法,都是为了更好地解决项目文件之间的依赖关系。

1.Makefile的变量、模式匹配

变量

系统变量

自定义变量

=,延迟赋值
:=, 立即赋值
?=,空赋值
+=,追加赋值

自动化变量

$<:第一个依赖文件
$^:全部的依赖文件
$@:目标

模式匹配

%:匹配任意多个非空字符
shell:*通配符

默认规则

.o文件默认使用.c文件来进行编译
CC=gcc
TARGET=mp3
OBJS=main.o mp3.o

$(TARGET):$(OBJS)
	$(CC) $^ -o $@
#main.o:
#	$(CC) -c main.c -o main.o
#mp3.o:
#	$(CC) -c mp3.c -o mp3.o
%.o:%.c
	$(CC) -c $< -o $@

.PHONY:clean 
clean:
	rm mp3 mp3.o main.o

2.Makefile条件分支

条件分支

ifeq (var1,var2)
...
else
...
endif
ifneq (var1,var2)
...
else
...
endif

makefile:

ARCH ?= X86

ifeq ($(ARCH),x86)
	CC=gcc
else 
	CC=arm-linux-gnueabihf-gcc
endif

3.Makefile的常用函数

(1)patsubst:模式替换函数 $(patsubst %.c , %.o, x.c.c bar.c)
(2)notdir:取文件名函数 $(notdir src/foo.c hacks)
(3)wildcard:获取匹配模式文件名函数(列出当前目录下所有符合模式“PATTERN”格式的文件名) $(wildcard *.c)
(4)foreach:遍历文件夹

Linux下的Makefile的构建_gcc_第3张图片
在这里插入图片描述

你可能感兴趣的:(Linux(嵌入式开发),linux,makefile)