GNU Make manual 学习笔记 C语言 / c++ 构建工具
3.Makefile文件的基本写法
通常Makefile只有规则(rules) ,也可以有注释(text)
rule1:
target . . . : prerequisites . . . #这种多见,
recipe
. . .
. . .
或者
rule2:
target . . .: prerequisites . . .; recipe #就是使用 ; 然后后面可以写recipe
recipe
. . .
3-1. rule
直译就是规则,就是一个target,并且规定了target的依赖,和执行的命令
3-1-1.target
1. 通常是生成的目标文件的名字,例如recipe中 gcc -o 文件名字(target) ,一般使用变量来表示 gcc -o $@
2. 伪目标,相当于是一组命令的名字 例如 clean ,仅仅有recipe,没有生成文件
3-1-2.prerequisites
可以简单理解为依赖。可以是
依赖的文件,
依赖的target
使用变量,所代表的文件或者target
可以是空,什么也没有。例子clean
3-1-3.recipe
简单说就是执行的命令。
例如前面的 gcc $< -o &@ #就是一个命令
@echo " message " #就是一个命令
这些命令需要在你的环境中可以直接使用。
就像在 linux中能使用 ls , ms-dos中可以使用 dir一样,需要配置好命令的路径,才能正常使用。
第一个命令前面一般是tab来作为命令开始。
在recipe中需要注意**空格**
写在Makefile中的recipe会被make逐个写到shell中,命令的分隔就是**空格**,
3-1-4.简单例子Makefile
.PHONY : all print
all: compile
print:
@echo "some message" #打印一些信息在控制台
#compile这个target依赖文件HelloWorld.c和名为print的target
compile: HelloWorld.c print
gcc $< -o &@
#变量&@使用target作为生成文件的名字,变量$<使用第一个prerequires作为依赖
clean:
rm -rf *.exe *.o