Linux下gcc/g++为我们提供了一个完善的c/c++程序编译环境,可是为什么还需要Makefile呢?原因很简单,Makefile就是告诉g++编译器怎样进行编译的一组规则。g++提供的make工具能够读取Makefile所定义的规则,并生成我们所需要的目标文件。当然我们也可以不写Makefile,用g++手动一个文件一个文件按顺序编译,但是当你面对大型项目的时候这种手动的方法就无能为力了,需要一套自动化的机制,Makefile的目的也正在于此。
Sample: 项目有两个文件,hello.cpp 和add.h
Makefile:
hello: hello.cpp add.o
g++ hello.cpp -o hello
add.o: add.h
g++ add.h -c
Makefile的格式:
target file: source file1,source file2,....
[command]
[command]
target file2: source file3, source file4..
[command]
[command]
Make工具以递归回朔的方式解释Makefile,首先看target file是否存在或者是否过期,如是,并且source files均存在,则执行下面的command.., 跳过command检查target file2. 最后回朔。生成我们最终的目标文件。