一、初识makefile 想要掌握makefile,首先需要了解两个概念,⼀个是⽬标(target),另⼀个就是依赖(dependency)。⽬标就是指要⼲什么,或说运⾏ make 后⽣成什么,⽽依赖是告诉 make 如何去做以实现⽬标。在 Makefile 中,⽬标和依赖是通过规则(rule)来表达的。 (一)、目标 首次编写makefile all:...
前文我们在 Makefile 的基本用法的演示中,Makefile 编写的目标,在 make 看来其实都是目标文件,例如 make 在执行的时候由于在目录找不到 target_a 文件,所以每次 make target_a 的时候,它都会去执行target_a 的命令,期待执行后能得到名为 target_a 的同名文件。 如果目录下真的有 target_a、target_b、target...
target:可以是目标文件,Object file,也可以是执行文件,还可以是一个标签 prerequisities:要生成那个target所需要的文件或者目标 command:make要执行的命令 target 这一个或多个的目标文件依赖于 prerequisites 中的文件,其生成规则定义在 command 中 在这个 makefile 中,目标文件(target)包含:执行文件 edit 和中间目标...
target: dependency command 在这个规则中,$@表示target,$<表示dependency。可以通过$@和$<来引用它们的值,例如: 代码语言:txt 复制 target: dependency echo "Target: $@" echo "Dependency: $<" 上述规则中的命令将会输出以下内容: 代码语言:txt 复制 Target: target Dependency: dependency makefile中的...
targets ...: target-pattern: prereq-patterns ... command command command 1. 2. 3. 4. 5. 从例子可以看出,Makefile一般的格式是: target:components rule 1. 2. 第一行表示的是依赖关系,第二行是规则,特别要注意,rule这行必须是TAB键开头。
$(TARGET):$(OBJ) @mkdir -p output $(CC) $(OBJ) $(LIB_PATH) $(LIB_NAMES) -o output/$(TARGET).$(VERSION) @rm -rf $(OBJ) 【13】清除编译信息 执行“make clean”清除编译产生的临时文件。 .PHONY:clean clean: @echo "Remove linked and compiled files..." rm -...
clean:rm*.o TARGET 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 三、特殊变量的使用 $(MAKE):用来递归调用 Makefile 的命令。这个变量可以让你在一个 Makefile 中调用另一个 Makefile。通常情况下,它被设置为 make,也就是递归调用 make 命令。这个变...
当生成target目标对象时,会执行$(MAKE) -C $(SUBDIR)这条命令,进入目录SUBDIR,该目录下有一个Makefile,并执行。其中,$(MAKE) 指make预定义的变量,一般指的就是make,无需修改,可通过make -p查看make所有的预定义的变量。当然,也可直接指明为make,即make -C $(SUBDIR)。其中-C表示改变当前目录,make的命令选...
$@为规则中的target名称。 $<为规则中第一个prerequisite名称 3、内置命令: Makefile中内置了一些常用的命令,有字符串处理函数subst、patsubst、strip、findstring、filter、filter-out、sort、word、wordlist、words、firstword、lastword;文件名处理函数dir、notdir、suffix、basename、addsuffix、addprefix、join、wildcard...
dependcy_files//生成目标所要的目标文件: dependcy_files 就是,要生成那个target所需要的文件或是目标。 command也就是make需要执行的命令。(任意的Shell命令) 这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于dependcy_files中的文件,其生成规则定义在command中。**==说白一点就是说,dependc...