makefile linux简单教程3

目录

模式规则(Pattern Rules)

PHONY 目标(Phony Targets)

多目标规则(Multiple Targets)

使用变量和函数


模式规则(Pattern Rules)

模式规则允许你使用通配符来定义一类文件的编译规则,从而简化 Makefile 的书写。模式规则使用 % 符号表示通配符。

%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@

在上面的示例中,%.o: %.c 定义了一条规则,指示编译器将所有的 .c 文件编译为相应的 .o 文件。$< 表示依赖文件列表中的第一个文件,$@ 表示目标文件。

PHONY 目标(Phony Targets)

PHONY 目标是指那些不对应真实文件的目标,而是代表一些动作或命令。使用 .PHONY 声明可以避免与同名文件冲突,并告诉 Makefile 这是一个伪目标。

.PHONY: clean

clean:
    rm -f *.o

在上面的示例中,.PHONY: clean 声明了 clean 是一个 PHONY 目标。这允许你在命令行中使用 make clean 命令来执行清理操作,而不会与同名的文件产生冲突。

多目标规则(Multiple Targets)

你可以为一个规则指定多个目标,表示这些目标共享相同的依赖和命令。

$(TARGET1) $(TARGET2): $(OBJS)
    $(CC) $(CFLAGS) $(OBJS) -o $@

使用变量和函数

Makefile 支持使用变量和函数来管理和处理数据。你可以使用变量来存储常用的值和命令,使用函数来进行字符串操作和条件判断。

VERSION = 1.0
TARGET = myapp-$(VERSION)

ifeq ($(DEBUG),1)
    CFLAGS += -g
else
    CFLAGS += -O2
endif

$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) $(OBJS) -o $@

在上面的示例中,VERSIONTARGET 是变量,存储了版本号和目标文件名。ifeq 条件判断根据 DEBUG 变量的值选择不同的编译选项。$@ 是一个自动化变量,表示当前目标。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值