一个通用的makefile详解

本文详细介绍了Makefile的整体结构和关键细节,包括顶层目录、子目录的Makefile职责,伪目标(.PHONY)、mkdir -p命令的使用,以及变量和符号的解释。通过实例代码展示了如何编译工程并进行文件复制和清理操作。
摘要由CSDN通过智能技术生成

 

一、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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值