首页 > 代码库 > 002编程基础----makefile

002编程基础----makefile

一、总述

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中,存在系统默认的自动化变量

$^:代表所有的依赖文件

$@:代表目标

$<:代表第一个依赖文件

改写:

hello:main.o func1.o func2.o

  gcc $^ -o $@

4、杂项

makefile中“#”字符后的内容被视作注释

hello:hello.c

  @gcc $^ -o $@

第一个“@”用于取消回显。