通用makefile讲解

转载地址:http://bbs.chinaunix.net/thread-3553668-1-1.html


1、关键变量含义

CROSS_COMPILE:交叉编译前缀

OPTIMIZE:关于优化的编译参数

WARNINGS:关于warning的编译参数

DEFS:关于宏定义的编译参数

EXTRA_CFLAGS:其他编译参数

$(OPTIMIZE)$(WARNING)$(DEFS)$(EXTRA_CFLAGS):共同构成了传给gcc的编译参数:



INC_DIR:头文件目录

SRC_DIR:源文件目录(当前目录,是被默认包含的)

OBJ_DIR:object文件的输出目录

EXTRA_SRC:源文件目录

EXCLUDE_FILES:exclude 文件列表


SUFFIX:源文件的后缀名

TARGET:最终的目标程序名

TARGET_TYPE:目标程序的类型:可以定义为ar:static library,so:shared library,和app:application,可执行文件


最终Makefile的行为是:

在$(SRC_DIR)定义的每个目录中查找后缀为$(SUFFIX)的文件,并加上$(EXTRA_SRC)中的文件,然后排除掉$(EXCLUDE_FILES)中的文件,获得本工程定义的源文件列表;对于每一个源文件,编译生成的一个.o文件和一个.d文件(依赖文件),放在$(OBJ_DIR)目录下,最终生成的目标文件为$(TARGET)。


此Makefile已经充分考虑文件之间的依赖关系,即,如果某个头文件发生改变,当运行make的时候,所有依赖于它的源文件将重新被编译。




通用makefile讲解_第1张图片

通用makefile讲解_第2张图片

通用makefile讲解_第3张图片





你可能感兴趣的:(makefile)