$(MAKE) $(patsubst %,_sfdep_%,$(ALL_SUB_DIRS)) _FASTDEP_ALL_SUB_DIRS="$(ALL_SUB_DIRS)" endif ifdef _FASTDEP_ALL_SUB_DIRS # 与上一段相对应,定义子目录目标,并将目标名还原为目录名,进入该子目录make。 $(patsubst %,_sfdep_%,$(_FASTDEP_ALL_SUB_DIRS)): $(MAKE) -C $(patsubst...
first_rule: sub_dirs $(MAKE) all_targets # 在内核编绎子目录中过滤出可以作为模块的子目录。 both-m := $(filter $(mod-subdirs), $(subdir-y)) SUB_DIRS := $(subdir-y) # 求出总模块子目录 MOD_SUB_DIRS := $(sort $(subdir-m) $(both-m)) # 求出总子目录 ALL_SUB_DIRS := $(s...
建立sa.c和sb.c2 个文件 建立一个简单的Makefile src=$(wildcard *.c ./sub/*.c) ...
(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS)) # 将处理留给上面的 make 调用 skip-makefile := 1 endif # ifneq ($(KBUILD_OUTPUT),) endif # ifeq ($(KBUILD_SRC),) # 如果这是 make 的最终调用,我们将处理 Makefile 的其余部分 ifeq ($(skip-makefile),) # 不要打印“...
sub/Makefile 的内容为: world: @echo "world" 那么我们在 test 目录下执行make命令的输出会是: ~/test » make hello world 除了用cd命令进入子目录,我们还可以导入子目录的 Makefile,以实现调用其 action 的动作,修改 test 下的 Makefile 如下: ...
sub-make: FORCE $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \ -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS)) # Leave processing to above invocation of make skip-makefile := 1 endif # ifneq ($(KBUILD_OUTPUT),) ...
export sub_make_done := 1 ifeq ($(need-sub-make),1) PHONY += $(MAKECMDGOALS) sub-make $(filter-out _all sub-make $(lastword $(MAKEFILE_LIST)), $(MAKECMDGOALS)) _all: sub-make @: # Invoke a second make in the output directory, passing relevant variables sub-make: ...
sub-make: $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \ -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS)) # Leave processing to above invocation of make skip-makefile := 1 endif # ifneq ($(KBUILD_OUTPUT),) ...
sub.o:sub.cpp g++ sub.cpp -c -o sub.o multi.o:multi.cpp g++ multi.cpp -c -o multi.oclean:rm -rf *.o calc 首次make编译,编译流程如下: image.png 此时我们修改add.cpp #include"add.h"intadd(inta,intb){returna+b+300;} 再次进行编译: ...
├── sub.c └── sub.o 然后对 4 个.o文件执行联合编译,最终生成可执行的app文件。 代码语言:javascript 复制 gcc main.o add.o sub.o mul.o-o app 以上是我们通过手动敲命令的方式执行编译,这种联合编译,我们如何通过 makefile 来处理呢?先来分析一下,我们把手动执行编译的过程逆向思考一下,想生成...