1、Makefile
make在执行时,需要一个命名为Makefile的文件。Makefile文件描述了整个工程的编译,连接等等规则。其中包括:工程中的哪些源文件需要如何编译以及如何进行编译;需要创建那些库文件,以及如何编译;需要创建哪些库文件以及如何创建这些库文件、如何最后产生我们想要得到的可执行文件。
2、文件名
make文件默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可以使用如下方法制定。
make -f 文件名
3、规则:用于说明如何生成一个或者多个目标文件,规则如下:
targets:prerequisites
command
目标 依赖 命令
例子:
main.o:main.c
gcc -c main.c
目标:mian.o
依赖:main.c
命令:gcc -c main.c
#最终目标
hello:main.o func1.o func1.o
gcc main.o func1.c func2.o -o hello
main.o:main.c
gcc -c main.c
func1.o:func1.c
gcc -c func1.c
func2.o:func2.c
gcc -c func2.c
.PHONY:clean
clean:
rm -f hello main.o func1.o func2.o
4、伪目标
makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”,(phony targets)。
.PHONY:clean
clean:
rm -f hello main.o func1.o func2.o
“.PHONY”将"clean"目标声明为“伪目标”。
5、变量
如:
obj=main.o func1.o func2.o func3.o
hello:$(obj)
gcc $(obj) -o hello
6、系统默认的自动化变量
1)$^:代表所有的依赖文件
2) $@:代表目标
3)$<: 代表第一个依赖文件
例如:
hello:main.o func1.o func2.o
gcc $^ -o $@
相当与:
hello:main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
7、注意点:
1)tab键
hello:main.o func1.o func2.o
[TAB]gcc main.o func1.o func2.o -o hello
2)取消回显
hello:main.o func1.o func2.o
@gcc main.o func1.o func2.o -o hello
3)make clean清除编译结果4)make install就是把编译出来的二进制文件,库,配置文件等等放到相应目录下

680

被折叠的 条评论
为什么被折叠?



