Makefile编写

CC=g++

ifdef VERBOSE
AT=
else
AT=@
endif

FILES=$(foreach dir,$(DIRS),$(wildcard $(dir)/Makefile))	

#export CPPSRC := $(foreach dir,$(SOURCE_DIR),$(wildcard $(dir)/*.cpp))
#SOURCES = $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(SRCEXTS)))) 

samples=$(FILES)

.PHONY:all clean help

all:
	$(AT)$(foreach sample, $(samples), $(MAKE) -C $(sample);)

clean:
	$(AT)$(foreach sample, $(samples), $(MAKE) clean -C $(sample);)


help:
	$(AT)echo "Sample building help menu."
	$(AT)echo "Samples:"
	$(AT)$(foreach sample,$(samples), echo "\t$(sample)";)
	$(AT)echo "Commands:"
	$(AT)echo "all - build all samples."
	$(AT)echo "clean - clean all samples."


.PHONY: test
#mkdir -p ddd;
 

test:
	for i in ./* ; do\
		if [ -d $$i ]; then\
			echo "$$i";\
			echo `basename $$i`;\
		fi ;\
		done
	echo "done";

.PHONY: show

SRC = $(wildcard *.c) 
#这里递归遍历3级子目录
SDIRS := $(shell find . -maxdepth 5 -type d)
#这里循环遍历目录的cpp文件
SFILES = $(foreach dir,$(SDIRS),$(wildcard $(dir)/Makefile))
#SFILES = $(foreach dir,$(SDIRS),$(wildcard $(dir)/*.cpp))

#$(foreach var text commond)
#var:局部变量
#text:文件列表,空格隔开,每一次取一个值赋值为变量var
#commond:对var变量进行操作(一般会使用var变量,不然没意义),每次操作结果都会以空格隔开,最后返回空格隔开的列表。

#SRC_EXT = c
#SRC_PATH = test
#rwildcard = $(foreach d, $(wildcard $1*), $(call rwildcard,$d/,$2) \
						$(filter $2, $d))
#SOURCES := $(call rwildcard, $(SRC_PATH), %.$(SRC_EXT))
#all:
#	@echo "SOURCES=$(SOURCES)"


show:
	@echo $(foreach nv, $(SFILES), $(nv))
	$(AT)$(foreach nv, $(SFILES), $(MAKE) clean -C $(nv);)


.PHONY: cleanall

SUBDIRS = $(shell find . * -type d | grep -v "\.")

cleanall:
	@for subdir in $(SUBDIRS); do $(MAKE) -C $$subdir clean; done

.PHONY:makeall

makeall:
	@for subdir in $(SUBDIRS); do $(MAKE) -C $$subdir; done

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

telllong

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值