- 在最顶层的目录,比如目录结构app下创建makefile
建立必要的路径
TOPDIR=./…
APP_DIR = $(TOPDIR)/app
APP_SRC_DIR = $(TOPDIR)/app/src
exclude_dirs= include
#查找所有子目录生成合集
dirs:=
(
s
h
e
l
l
f
i
n
d
.
−
m
a
x
d
e
p
t
h
1
−
t
y
p
e
d
)
d
i
r
s
:
=
(shell find . -maxdepth 1 -type d) dirs:=
(shellfind.−maxdepth1−typed)dirs:=(basename
(
p
a
t
s
u
b
s
t
.
/
(patsubst ./%,%,
(patsubst./(dirs)))
dirs:=$(filter-out
(
e
x
c
l
u
d
e
d
i
r
s
)
,
(exclude_dirs),
(excludedirs),(dirs))
SUBDIRS := $(dirs)
MODULES = $(SUBDIRS)
LIBDIR = $(TOPDIR)/build/lib
BINDIR = $(TOPDIR)/build/bin
#BUILD_DIR = $(shell mkdir -p $(LIBDIR) $(BINDIR))
.PHONY:all
#all : $(BUILD_DIR) $(MODULES)
all : $(MODULES)
$(BUILD_DIR):
@echo " Create directory $@ …"
mkdir -p $(LIBDIR) $(BINDIR)
.PHONY:$(MODULES)
$(MODULES):
@echo " comin directory $@"
$(MAKE) -C
(
A
P
P
D
I
R
)
/
(APP_DIR)/
(APPDIR)/@
.PHONY:clean
clean:
#@rm $(OBJS_DIR)/.o
#@rm -rf $(BIN_DIR)/ $(DMK_DIR)/*
for dir in $(MODULES);
do $(MAKE) -C $$dir clean||exit 1;
done
- 在app/src下makefile
使用EXTRA_DIRS 保证最后的target生成目录是最后的目标
TOPDIR=./…/…
exclude_dirs= include main daemon
EXTRA_DIRS = main daemon
include $(TOPDIR)/makefile/Makefile.env