makefile是一种描述依赖关系的文件, 它主要描述的是整个工程编译规则, 同时也给工程的维护提供很大的方便. 这在大型工程中非常实用. 在写好makefile之后, 只需要在命令行输入make命令, 工程就按照既定的makefile规则进行"自动化编译".
1. 编译(compile)和链接(link):
我们通常所说的编译一般来说指的是编译和链接这两个过程的总称.
不管是什么类型的源文件(.c .cpp .pas .i...), 都需要先通过编译器中的编译单元生成目标文件(Object File), 它在Windows下是.obj文件, 在Linux下是.o文件, 这个过程叫作编译.
然后编译器的链接单元把这些生成的目标文件合成为可执行文件, 这时链接单元只使用这些目标文件, 并不关心源代码, 这个过程叫作链接.
在很多时候, 由于源文件的数目过于庞大, 编译后生成的目标文件数目也就很多, 在链接过程中由于需要指出所有目标文件, 这就显得很不方便, 于是我们可以把多个目标文件打个包.
在Windows下管这种文件叫库文件(Library File), 扩展名为.lib;
在Linux下这种文件叫Archive File, 扩展名为.a.
可见.lib和.a都是编译的产物而非链接的产物.
2. makefile:
我们首先看一个简单的makefile:
CC = g++
OBJS = main.o base.o derive.o
EXEC = test
$(EXEC): $(OBJS)
$(CC) -o $@ $^
main.o: main.cpp base.h derive.h
$(CC) -c $<
base.o: base.cpp base.h
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余4页未读,立即下载