# 伪目标 PHONY := __build __build: # 清空需要的变量 obj-y := subdir-y := EXTRA_CFLAGS := # 包含同级目录Makefile # 这里要注意,相对路径为 执行本 Makefile.build 的路径 include Makefile # 获取当前 Makefile 需要编译的子目录的目录名 # obj-y := a.o b.o c/ d/ # $(filter %/,...
subdir-y := $(patsubst %/, %, $(subdir-y)) // 结果为:c d 1. 2. ② 通用 Makefile 的设计思想 A. 在 Makefile 文件中确定要编译的文件、目录,比如: obj-y += main.o obj-y += a/ 1. 2. “Makefile”文件总是被“Makefile.build”包含的。 B. 在 Makefile.build 中设置编译规则,...
“CFLAGS”会在命令中被展开为“-Ifoo -Ibar -O”。我们可以看到在“CFLAGS”定义中使用到了之后定义的变量“include_dirs”。 其缺点是: 1.使用此风格的变量定义,可能会由于出现变量的递归定义而导致make陷入到无限的变量展开过程中,最终使make执行失败。例如,接上边的例子,我们给这个变量追加值: CFLAGS = $(...
subdir-y:=c/d/subdir-y:=$(patsubst%/,%,$(subdir-y))// 结果为:c d ② 通用 Makefile 的设计思想 A. 在 Makefile 文件中确定要编译的文件、目录,比如: 代码语言:javascript 复制 obj-y+=main.o obj-y+=a/ “Makefile”文件总是被“Makefile.build”包含的。 B. 在 Makefile.build 中设置...
建立第一个目标规则 debug: dirs,dirs 作用是创建临时文件夹。 建立可执行文件目标规则 $(BIN_NAME): $(OBJECTS)。 通过include 方式添加所有所有目标的依赖 -include $(DEPS)。 目标依赖规则和生成目标依赖 $(BUILD_PATH)/%.o: $(SRC_PATH)/%.$(SRC_EXT) ...
obj-y += main.oobj-y += a/ “Makefile”文件总是被“Makefile.build”包含的。 B. 在Makefile.build中设置编译规则,有3条编译规则 i. 怎么编译子目录? 进入子目录编译: $(subdir-y):make -C $@ -f $(TOPDIR)/Makefile.build ii. 怎么编译当前目录中的文件?
DIRS-$(CONFIG_ISAL) += isalbuild.PHONY: all clean $(DIRS-y) include/spdk/config.h mk/config.mk \ cc_version cxx_version .libs_only_other .ldflags ldflags install \ uninstall# Workaround for ninja. See dpdkbuild/Makefile export MAKE_PID := $(shell echo $$PPID)ifeq ($(SPDK_ROOT_DI...
$(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ; 这句在执行vmlinux目标前由依赖关系产生,我们来看看最关键的vmlinux-dirs。 vmlinux-dirs:= $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
vmlinux的主要构成文件vmlinux-init、vmlinux-main、vmlinux-lds的依赖是vmlinux-dirs。 顶层Makefile Line652:vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ ...
Makefile中的字符串替换,做下验证和总结。...案例:Makefile Tutotial中一段代码 Makefile Tutotial最后给出了一段makefile,里面OBJS有字符串通配、替换的过程: Makefile SRC_DIRS := ...name '*.s') OBJS := $(SRCS:%=$(BUILD_DIR)/%.o) TAR: @echo SRCS : $(SRCS) @echo OBJS : $(OBJS) 执...