今天结合网上的一个例子,自己写了一个可适用于多层目录的Makefile。
ARCH= armv5l-linux-
CC= $(ARCH)gcc
LD = $(ARCH)ld
AS = $(ARCH)as
CPP = $(ARCH)g++
AR = $(ARCH)ar
CFLAGS= -g -O2 -D_GNU_SOURCE -DHAVE_CONFIG_H
LIBS= -lpthread -lrt -lm
INCLUDE= -I.
APPDIR= $(PWD)
APPINCH=$(shell find $(APPDIR) -name "*.h*")
TMPDIR=$(dir $(APPINCH))
APPINCDIR=$(sort $(TMPDIR))
INCLUDE += $(foreach temp, $(APPINCDIR), -I$(temp))
SRC=$(shell find $(APPDIR) -name '*.c')
APP=$(SRC:%.c=%.o)
all: main
$(APP): %.o: %.c
$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
main: clean $(APP)
$(CC) -o $@ $(LIBS) $(INCLUDE) $(APP)
clean:
-rm -rf $(APP)
-rm -f main
.PHONY: clean
可以搜索路径下的源文件和头文件,最后生成一个可执行程序。