Makefile 文本编辑三个要素
格式为:
目标:依赖
tab命令
目标:所谓目标为为主目标铺垫分支(类似于一个变量的名称,它对应执行命令)
依赖:基础文件、编译完成的文件以及目标(命令基于的文件)
命令:为目标执行的命令。(执行何种命令)
.PHONY 指定伪目标(伪目标会每次都被执行不进行检查该目标是否为最新值)
简单来说,如果一个目标与执行Makefile文件目录下存在的文件重名,若假定该命令无任何依赖,则Makefile执行时以其规则认定文件目录下文件为最新文件,则不会执行目标。因此,伪目标存在的意义便在于此。
targeta : targetb target c
echo "I want to learn about linux!"
targetb:
echo " Hello "
targetc:
echo "World"
该例子中targetb、targetc没有依赖文件,所以依赖为空,命令为echo命令。 而targeta 依赖于targetb与targetc。所以其结果如下:
echo "Hello "
Hello
echo "World "
World
echo "I want to learn about Linux"
I want to learn about Linux
如果我在文件目录下创建一个文件名为targetb的文件后
zz@ubuntu:~/linux/Make/Makefile_File$ ls
Makefile targetb
zz@ubuntu:~/linux/Make/Makefile_File$
运行结果如下:
zz@ubuntu:~/linux/Make/Makefile_File$ make
echo "World "
World
echo "I want to learn about Linux"
I want to learn about Linux
zz@ubuntu:~/linux/Make/Makefile_File$
可以发现其中targetb的目标被跳过不执行
此时我添加一个伪目标
.PHONY: targetb
targeta: targetb targetc
echo "I want to learn about Linux"
targetb:
echo "Hello "
targetc:
echo "World "
执行结果如下:
zz@ubuntu:~/linux/Make/Makefile_File$ make
echo "Hello "
Hello
echo "World "
World
echo "I want to learn about Linux"
I want to learn about Linux
以上为今天的学习内容,与各位共同成长,与君共勉。