当前位置: 技术问答>linux和unix
编写一个makefile
来源: 互联网 发布时间:2016-09-22
本文导语: 我有如下目录结构的工程: 总工程下面有:项目A、项目B、项目C,makefile;项目A/B/C下面有:源程序和编译该项目的makefile; 问题:编写总工程下面的那个makefile 要求:一个make命令,即可实现:自动搜索其子目录中的...
我有如下目录结构的工程:
总工程下面有:项目A、项目B、项目C,makefile;项目A/B/C下面有:源程序和编译该项目的makefile;
问题:编写总工程下面的那个makefile
要求:一个make命令,即可实现:自动搜索其子目录中的makefile,并在子目录中执行“make”。
思路:
1.利用find命令,搜索“makefile”;(如会搜到:./A/makefile)
2.利用取目录函数dir,对搜索结果去目录;(如在上一步的基础上,会得到:./A)
3.判断所取目录是否为当前目录。如果是,则退出(防止死循环);否则执行make命令。
请问这个makefile,该如何编写的。我写的总是不对。向各位请教了,多谢。
总工程下面有:项目A、项目B、项目C,makefile;项目A/B/C下面有:源程序和编译该项目的makefile;
问题:编写总工程下面的那个makefile
要求:一个make命令,即可实现:自动搜索其子目录中的makefile,并在子目录中执行“make”。
思路:
1.利用find命令,搜索“makefile”;(如会搜到:./A/makefile)
2.利用取目录函数dir,对搜索结果去目录;(如在上一步的基础上,会得到:./A)
3.判断所取目录是否为当前目录。如果是,则退出(防止死循环);否则执行make命令。
请问这个makefile,该如何编写的。我写的总是不对。向各位请教了,多谢。
|
subprojs = $(notdir $(filter-out .,$(shell find -type d)))
subprojs_all = $(patsubst %,all-%,$(subprojs))
subprojs_clean = $(patsubst %,clean-%,$(subprojs))
TARGET = $(patsubst %,lib%.a,$(notdir $(shell pwd)))
srcs = $(wildcard *.c)
objs = $(patsubst %.c,%.o,$(filter %.c,$(srcs)))
.PHONY: dummy clean_dist
all: $(subprojs_all) $(TARGET)
clean: $(subprojs_clean)
ifdef subprojs
$(subprojs_all): dummy
$(MAKE) -C $(patsubst all-%,%,$@) all
$(subprojs_clean): dummy
$(MAKE) -C $(patsubst clean-%,%,$@) clean
endif
$(TARGET):$(objs)
@echo make $@
|
SUBDIRS = A
B
C
all: $(SUBDIRS)
$(SUBDIRS):
#$(MAKE) -C $@ all
$(MAKE) -C $@
B
C
all: $(SUBDIRS)
$(SUBDIRS):
#$(MAKE) -C $@ all
$(MAKE) -C $@