在这个Makefile中,我们首先定义了源文件目录SRC_DIRS和需要排除的目录EXCLUDE_DIRS。然后,我们使用wildcard函数获取所有源文件,并使用filter-out函数排除指定目录下的文件。这样,SRC_FILES变量就包含了除excluded_dir目录外的所有源文件。 3. 测试Makefile以确保排除规则生效 你可以通过运行make命令来编译项目,并检查是否...
# 在这里添加要执行的命令print_dirs:@for dir in$(SRC_DIRS); do \echo"Processing directory: $$dir"; \(cd $$dir && pwd); \done 方式2 # 设置要排除的目录列表EXCLUDE_DIRS := \./vendor \./.git \./.idea \./examples \./test # 添加匹配的...
dirs := $(shell find . -maxdepth 1 -type d) dirs := $(basename $(patsubst ./%,%,$(dirs))) dirs := $(filter-out $(exclude_dirs),$(dirs)) #避免clean子目录操作同名,加上_clean_前缀 SUBDIRS := $(dirs) clean_dirs := $(addprefix _clean_,$(SUBDIRS) ) # .PHONY: subdirs $(...
当前目录下的子目录是通过shell命令自动得到的,subdirs:$(SUBDIRS) 这块会进入每个子目录执行make,当然有些子目录并不需要编译,可以通过exclude_dirs指定,比如顶层目录的exclude_dirs=bin lib include。 $(DEPENDS):%.d:%.c 这块作用是自动生成头文件依赖,这部分包括5条命令,看起来很复杂,其实原理很简单,假设main....
# 排除目录exclude_dirs:=.git # 显示深度为1的子目录dirs:=$(shell find.-type d-maxdepth1)# 去掉获取到目录名称前面的./dirs:=$(basename$(patsubst./%,%,$(dirs)))# 过滤指定目录dirs:=$(filter-out$(exclude_dirs),$(dirs))all:$(foreachN,$(dirs),make-C$(N);)clean:$(foreachN,$(...
dirs := $(basename $(patsubst ./%, %, $(dirs))) # 过滤指定目录 dirs := $(filter-out $(exclude_dirs), $(dirs)) all: $(foreach N,$(dirs),make -C $(N);) clean: $(foreach N,$(dirs),make -C $(N) clean;) 1. ...
dirs := $(filter-out $(exclude_dirs),$(dirs)) #避免clean子目录操作同名,加上_clean_前缀 SUBDIRS := $(dirs) clean_dirs := $(addprefix _clean_,$(SUBDIRS) ) # .PHONY: subdirs $(SUBDIRS) clean #执行默认make target $(SUBDIRS): ...
# 格式化类命令 format Gofmt (reformat) package sources (exclude vendor dir if existed). # 静态代码检查 lint Check syntax and styling of go sources. # 测试类命令 test Run unit test. cover Run unit test and get test coverage. # 构建类命令 build Build source code for...
exclude_dirs:=include$(TOPDIR)Makefile.env 直接扫描当前目录下的各个模块,进入到里面执行make编译,如果不想要某一个模块也参与编译,可以通过变量exclude_dirs指定。 一般模块目录添加的Makefile 对于一般模块,通过将其所有的源文件链接成一个动态库,然后放到顶层目录下的lib目录下面,让其它模块调用。
[EXCLUDE_FROM_ALL] source1 [source2 ...]) 1. 2. 3. 例子 ##从源文件生成helloworld的可执行文件 ADD_EXECUTABLE(helloworld helloworld.cpp) 1. 2. ADD_DEPENDENCIES命令 使top-level的target依赖于其他的target,确保top-level的target编译前,其他target已经编译。