Makefile学习笔记(一)
概述
Makefile在Linux环境开发中时常被用到,虽然有各种功能强大的IDE帮我们做了make这一步,但很多开源代码依旧还在使用makefile,makefile定义了整个项目的编译规则,了解makefile不仅可以加深对于源码结构的理解,也能从makefile文件中了解到源码之间的依赖关系以及编译次序。
显式规则
Makefile中最常见的就是显式规则,即由Makefile编写者显式指定的源码编译规则。Makefile文件由一组或者多组依赖关系和规则组成,每个依赖关系由一个目标及该目标所依赖的源文件组成,给个简单的例子:
main.o: main.cpp
上面的表达表示了目标main由其依赖的main.cpp文件组成,目标一般是一个单独的可执行文件,这个例子表达的仅仅是一个依赖关系,仅有依赖关系对于源码的编译并无用。这时就需要规则了,规则是详细表达依赖关系具体创建过程的一组语句,更具体点,也可以说是一些shell命令。对于上面的依赖关系,其完整的表达形式应如下:
main.o: main.cpp
clang++ -o main.o -c main.cpp
编译器gcc/g++还是clang/clang++都无所谓,对于makefile,只要依赖关系下的规则能正确生成相应的可执行文件即可。
make命令常用选项及参数
m