一、$(@F) 表示"$@"的文件部分,如果"$@"值是"dir/foo.o",那么"$(@F)"就是"foo.o","$(@F)" 相当于函数"$(notdir $@)"。 "$(*D)" "$(*F)" 和上面所述的同理,也是取文件的目录部分和文件部分。对于上面的那个例子, "$(*D)"返回"dir",而"$(*F)"返回"foo" "$(%D)" "$(%F)"...
$(patsubst <pattern>,<replacement>,<text>) pattern 表示第一个参数,用于表示如何对 text 进行匹配。 replacement 表示第二个参数 表示如何对匹配的字符进行重写。 patsubst在进行匹配替换的时候,会先将字符串text根据空格或者tab键或者回车换行符进行分割,然后一一的进行替换和匹配。 这个函数也是一个字符串替换函...
在上面的makefile当中我们定义了一个变量cflags并且在编译命令当中使用,我们定义变量的方法其实和shell差不多,我们直接使用=可以定义变量,然后使用$(变量名)可以使用变量,因为上面的例子当中cflag=-c比较短,比较简单,但是如果当我们的编译参数很多很长的时候使用变量就非常有效了,而且如果在一个项目当中如果有成千上万...
rm-f$(shell find -name"*.o")#删除所有的.o文件rm-f$(shell find -name"*.d")#删除所有的.d文件rm-f$(TARGET)#删除目标文件.PHONY:all clean顶层Makefile.build解析(无需改动):PHONY := __build#定义一个PHONY变量__build:#开头说明__build伪目标,使其成为Makefile.build的第一个目标obj-y :=#...
主Makefile#预定义变量 CC = gcc #预定义编译目录 SUBDIRS = f1 f2 main obj #预定义目标 OBJS = f1.o f2.o main.o BIN = myapp OBJS_DIR = obj BIN_DIR = bin #传递预定义参数 export CC OBJS BIN OBJS_DIR BIN_DIR all:CHECK_DIR $(SUBDIRS) CHECK_DIR: @mkdir -p $(BIN_DIR) $(SUBDIR...
比较参数“arg1”和“arg2”的值是否相同。当然,参数中我们还可以使用make的函数。如: ifeq ($(strip $(foo)),) <text-if-empty>; endif 这个示例中使用了“strip”函数,如果这个函数的返回值是空(Empty),那么<text-if-empty>;就生效。 第二个条件关键字是“ifneq”。语法是: ...
[ -f file ]:指定makefile文件。make 默认在工作目录中寻找名为 GNUmakefile、makefile、Makefile 的文件作为 makefile 输入文件f可以指定以上名字以外的文件作为 makefile 输入文件 [targets ]:若使用 make 命令时没有指定目标,则 make 工具默认会实现 makefile 文件内的第一个目标,然后退出指定了 make 工具...
在Makefile 中,可以使用自定义函数来完成一些特定的操作。自定义函数一般使用 define 和 endef 命令来实现,在 define 和 endef 之间是函数体。自定义函数在使用 call 函数进行调用,在调用时传递参数。自定义函数可以使用 Makefile 内置的命令和变量,也可以使用自定义变量和命令。