如何为特定文件添加不同的规则?

MrG*_*igu 6 makefile

我的Makefile有一些问题.

使用此命令,我可以将所有*.c文件编译为*.o,这很有效:

$(OBJ) : %.o : %.c $(LDSCRIPT) Makefile
    $(CC) $(ARM9_INCLUDES) -c $(CFLAGS) $< -o $@
Run Code Online (Sandbox Code Playgroud)

但是现在我想知道,如果我想-O3在一个特定的文件上运行优化-O0怎么办,还有剩下的?

是否有任何命令为特定文件添加不同的规则?

我现在正在做的是用自己的规则编译每个C文件,这非常烦人,因为我有大约30个文件使Makefile变得庞大,每次我在一个文件中更改某些东西时它再次编译所有内容.

Jan*_*dec 13

particular_file.o : CFLAGS+=-O3
Run Code Online (Sandbox Code Playgroud)

(假设GNU make)在GNU Make手册中看到特定目标的变量值(也许是紧随其后的特定于模式的变量值).

另请注意,该命令是针对给定文件的最具体规则使用的,因此您可以拥有特定于目标的变量值:

particular_file.o : particular_file.c
        completely_special_compiler -o $@ $<

%.o : %.c
        $(CC) $(CFLAGS) -o $@ $<
Run Code Online (Sandbox Code Playgroud)