一、Makefile整体过程
一般整个工程的Makefile分为3类:
1. 顶层目录的Makefile2. 顶层目录的Makefile.build
3. 各级子目录的Makefile
(1)顶层目录的Makefile:
它除了定义obj-y来指定根目录下要编进程序去的文件、子目录外,主要是定义工具链、编译参数、链接参数──就是文件中用export导出的各变量。
部分示例代码如下:
# 编译器在编译时的一些通用参数设置
CFLAGS := -Wall -O2 -g -DDEBUG
# 添加头文件路径,不添加的话include目录下的头文件编译时找不到
CFLAGS += -I $(shell pwd)/include -I/opt/libdecode/include
# 链接器的链接参数设置
LDFLAGS := -ljpeg -lz -lpng -L/opt/libdecode/lib
export CFLAGS LDFLAGS
(2)顶层目录的Makefile.build:
这是最复杂的部分,它的功能就是把某个目录及它的所有子目录中、需要编进程序去的文件都编译出来,打包为built-in.o
部分示例代码如下:
all:
make -C ./ -f $(TOPDIR)/Makefile.build
$(CC) $(LDFLAGS) -o $(TARGET) built-in.o
(3)各级子目录的Makefile: