常用函数
1 $(foreach var,list,text)
2 $(filter pattern...,test)
3 $( filter-out pattern...,text)
4 $(wildcard pattern)
5 $(patsubts pattern,replacement,test)
=延时变量
:及时变量


Makefile 设计思想 !!!


递归处理 依赖更新 规则



$@ $^ $< $%

Linux Makefile 生成 *.d 依赖文件以及 gcc -M -MF -MP 等相关选项说明
基于makefile顶层设计思想 一套常用makefile模板代码如下


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)
本文详细介绍了Makefile中的常用函数,如foreach、filter、filter-out、wildcard和patsubst,以及延时变量的概念。同时,展示了Makefile的设计思想,包括递归处理和依赖更新规则,并提供了一套通用的Makefile模板代码,涵盖了目标编译、链接、清理等操作。此外,还提及了Linux下生成依赖文件的相关选项。


585

被折叠的 条评论
为什么被折叠?



