Makefile

常用函数

1 $(foreach var,list,text) 

2 $(filter pattern...,test)

3 $( filter-out pattern...,text)

4 $(wildcard pattern)

5 $(patsubts pattern,replacement,test)

=延时变量

:及时变量

Makefile_第1张图片Makefile_第2张图片

Makefile 设计思想 !!!

Makefile_第3张图片Makefile_第4张图片

递归处理  依赖更新 规则  

Makefile_第5张图片

Makefile_第6张图片

Makefile_第7张图片

$@ $^ $< $% 

Makefile_第8张图片

Makefile_第9张图片Makefile_第10张图片

Linux Makefile 生成 *.d 依赖文件以及 gcc -M -MF -MP 等相关选项说明 

基于makefile顶层设计思想  一套常用makefile模板代码如下

Makefile_第11张图片Makefile_第12张图片


CROSS_COMPILE = 
AS		= $(CROSS_COMPILE)as
LD		= $(CROSS_COMPILE)ld
CC		= $(CROSS_COMPILE)gcc
CPP		= $(CC) -E
AR		= $(CROSS_COMPILE)ar
NM		= $(CROSS_COMPILE)nm

STRIP		= $(CROSS_COMPILE)strip
OBJCOPY		= $(CROSS_COMPILE)objcopy
OBJDUMP		= $(CROSS_COMPILE)objdump

export AS LD CC CPP AR NM
export STRIP OBJCOPY OBJDUMP

CFLAGS := -Wall -O2 -g
CFLAGS += -I $(shell pwd)/include

LDFLAGS := 

export CFLAGS LDFLAGS

TOPDIR := $(shell pwd)
export TOPDIR

TARGET := test


obj-y += main.o
obj-y += sub.o
obj-y += a/


all : start_recursive_build $(TARGET)
	@echo $(TARGET) has been built!

start_recursive_build:
	make -C ./ -f $(TOPDIR)/Makefile.build

$(TARGET) : built-in.o
	$(CC) -o $(TARGET) built-in.o $(LDFLAGS)

clean:
	rm -f $(shell find -name "*.o")
	rm -f $(TARGET)

distclean:
	rm -f $(shell find -name "*.o")
	rm -f $(shell find -name "*.d")
	rm -f $(TARGET)
	

 

你可能感兴趣的:(重学嵌入式,stm32,iot,51单片机)