继续学习Advanced Linux Programming.

Java程序员应该很熟悉Ant这个构建工具,Makefile是类似的自动化构建工具,很多C/C++程序都是用Makefile来构建的。
同样使用《安装C/C++编译环境》的示例程序,初步了解Makefile的使用.

下面的Makefile将自动完成编译、连接和工作。

reciprocal: main.o reciprocal.o
	g++ $(CFLAGS) -o reciprocal main.o reciprocal.o

main.o: main.c reciprocal.hpp
	gcc $(CFLAGS) -c main.c

reciprocal.o: reciprocal.cpp reciprocal.hpp
	g++ $(CFLAGS) -c reciprocal.cpp

clean:
	rm -f *.o reciprocal

冒号左边是目标(target),与Ant中的target类似,冒号右边是该目标的依赖。第一目标下面是该目标的执行规则,规则左边必须有Tab空格。
其中的$(CFLAGS)是make变量,可以在Makefile文件中定义,也可以在命令行一定义。

执行make命令将自动构建该程序:

make CFLAGS=-o2

定义CFLAGS, -o2为编译优化程序的参数:

make