笔者同广大的初学者一样,很羡慕能一个make就干需要敲很多命令的事情。虽然没有系统的学过Linux,对shell和Makefile只了解皮毛中的皮毛,但是在我看来东西只有在用的时候再去学习,才爱得真切。本文将简单介绍最简单的且能满足需求的Makefile。
1、make命令依赖于Makefile文件,文件名就叫做Makefile或者makefile,没有后缀名。
2、Makefile文件集成了整个程序编译和链接过程,当然,电脑只是一个机器,如果要完美地完成整个过程,需要我们告诉它是哪个.C文件生出了哪个.O文件,哪些.O文件生出了可执行文件。
3、Makefile的组成: 规则+变量
目标:依赖
命令(注意,前面一定是tab键)
通过命令执行之后,依赖生成了目标,比如.C文件生成.O文件
4、“伪目标,只有目标没有依赖,通常用关键字.PHONY:clean标明。”这句话是度娘的,我也没理解到,不过既然是简单的Makefile,那么只要记得有这么一句话就行了。
5、最终目标:执行make,在命令行输入make ,则执行第一条,如果想要执行其他的,则输入make+name
6、简单makefile分析
.PHONY:clean 这一行不知道干什么用,写上就行了
CC=gcc gcc为编译器
OBJ= game.o init.o 目标文件由哪些.C文件生成就写哪些,注意后缀是.o
BIN=game 最后生成的目标文件名
game:$(OBJ)
$(CC) -o $@ $^ 这个翻译过来的意思gcc -o game game.o init.o
%.o:%.c
$(CC) -c $< 把所有.c文件编译成.o文件
clean:
rm -f *.o 删除所有.o文件
执行make之后会在当前目录下生成对应的.o文件和目标文件;执行make clean之后会删除当前目录下的.o文件,这也就完成了一个目标文件由多个.c文件组成的编译任务。
以上的东东,大约在Linux编程过程中已经足够用了。更深入的东东就等到需要用到更深入的时候在深入的学习吧。