makefile中几个常见的自动变量:
$<
:第一个依赖文件的名称;
$^
:所有不重复的依赖文件,以空格分开;
$@
:目标文件的完整名称;
$?
:所有时间戳比目标文件新的依赖文件,并以空格分开;
mkdir -p $(@D)
:递归地创建 %.o 文件所在的目录。
objects = obj/loader.o \
obj/gdt.o \
obj/drivers/driver.o \
obj/hardwarecommunication/port.o \
obj/hardwarecommunication/interruptstubs.o \
obj/hardwarecommunication/interrupts.o \
obj/drivers/keyboard.o \
obj/drivers/mouse.o \
obj/kernel.o
%.o: %.cpp
mkdir -p $(@D)
g++ ${GPPPARAMS} -o $@ -c $<
mkdir -p $(@D)
:递归地创建 %.o 文件所在的目录。比如obj/drivers/mouse.o
,$(@D)
的值为 mouse.o 前的目录的值,即obj/drivers/
,该语句将会递归地创建 obj 目录和 drivers 目录。
- 递归地删除当前目录下所有的 exe 文件:
find . -name '*.exe' -type f -print -exec rm -rf {} \;
(1) “.” 表示从当前目录开始递归查找
(2) " -name ‘*.exe’ " 根据名称来查找,要查找所有以 .exe 结尾的文件夹或者文件
(3) " -type f " 查找的类型为文件
(4) “-print” 输出查找的文件目录名
(5) 最主要的是是 -exec 了,-exec 选项后边跟着一个所要执行的命令,表示将 find 出来的文件或目录执行该命令。