一、总述
make来构建和管理自己的软件工程。
GNU的make能够使整个软件工程的编译、链接只需要一个命令就可以完成。
make 在执行时,需要一个命名为Makefile的文件。
Makefile文件描述了整个工程的编译,链接规则。包括:
1、工程中哪些文件需要编译
2、需要创建哪些文件
3、如何创建这些文件
4、如何产生我们想要的可执行文件。
例如:
hello: main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
main.o:main.c
gcc -c main.c
fun1.o:func1.c
gcc -c func1.c
func2.o:func2.c
gcc -c func2.c
二、Makefile术语
1、规则:用于说明如何生成一个或多个目标文件,格式如下:
target:prerequisites
command
即,目标 依赖 命令
main.o:main.c
gcc -c main.c 命令需要tab键
make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为两者之一时,可以使用如下方法指定:
make -f 文件名
2、伪目标
Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)。
.PHONY : clean
clean:
rm -f hello main.o func1.o func2.o
".PHONY"将“clean”目标声明为伪目标。
3、变量
obj=main.o func1.o func2.o func3.o
hello:$(obj)
gcc $(obj) -o hello
另外,makefile中,存在系统默认的自动化变量
$^:代表所有的依赖文件
[email protected]:代表目标
$<:代表第一个依赖文件
改写:
hello:main.o func1.o func2.o
gcc $^ -o [email protected]
4、杂项
makefile中“#”字符后的内容被视作注释
hello:hello.c
@gcc $^ -o [email protected]
第一个“@”用于取消回显。
002编程基础----makefile