首页 > 解决方案 > Makefile 规则匹配

问题描述

在我的 gnu-make-3.81 Makefile 中,如果没有 .c 源文件,我希望从 .s 文件生成 .o 文件。因此,我定义了以下已简化的规则:

all::$(OBJS)

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

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

使用 gnu-make-3.81,当没有 .c 源文件时,它将使用第二条规则生成 .o 文件。但是使用 gnu-make-3.82 会出现错误:

make: *** No rule to make target `xxx.c', needed by `xxx.s'.  Stop.

我怎样才能让它像 gnu-make-3.81 一样工作?

标签: makefile

解决方案


推荐阅读