Make
Make是构建C程序的强大工具,参考:《GNU Make项目管理》
http://shop.oreilly.com/product/9780596006105.do
要是有工具能自动重新编译那些修改过的源文件就好了。
0、make是一个可以替你运行编译命令的工具。
make会检查源文件和目标文件的时间戳,如果目标文件过期,make就会重新编译。
对于每个目标,make需要知道两件事:
(1)依赖项:生成目标需要哪些文件
(2)生成方法:生成该文件要用哪些指令。
launch.o: launch.c launch.h thruster.h
gcc -c launch.c
thruster.o: thruter.h thruster.c
gcc -c thruster.c
launch: launch.o thruster.o
gcc launch.o thruster.o -o launch
注:生成方法必须以tab开头,如果用空格缩进,就无法生成程序。
1、变量:
CFLAGS = -Wall –Wextra –v
fred:fred.c
gcc fred.c $(CFLAGS) –o fred
2、使用%、^ 和 @
很多编译命令看起来都很像:
fred: fred.c
gcc fred.c –Wall –o fred
这是可以用%符号写一条更通用的“目标/生成方法”:
%: %.c #假设你想根据<文件>.c创建<文件>
gcc $^ -Wall –o $@ # $^ 是依赖项的值, $@是目标的名字
3、隐式规则
Make工具对编译过程一清二楚,即使你不告诉它如何构建文件,它也可以使用隐式规则自行构建。例如,你有一个叫fred.c的文件,但没有makefile,可以用以下命令编译:
make file
关于make的更多信息:
http://www.gnu.org/software/make/