C 创建通用生成文件

C 创建通用生成文件,c,makefile,gnu,C,Makefile,Gnu,我正在尝试创建一个makefile,它将尽可能少地重复命令。基本思想是在目标上指定变量名,如下所示: CC = gcc CFLAGS = -std=c99 -pedantic-errors -Wall some_target: P = some_target some_other_target: P = some_other_target ... #common compilation command $(CC) $(CFLAGS) $(P).c -o $(P).o 因此,

我正在尝试创建一个makefile,它将尽可能少地重复命令。基本思想是在目标上指定变量名,如下所示:

CC = gcc
CFLAGS = -std=c99 -pedantic-errors -Wall

some_target:
    P = some_target

some_other_target:
    P = some_other_target
...
#common compilation command
$(CC) $(CFLAGS) $(P).c -o $(P).o

因此,只有一个编译命令接收变量p,该变量对于每个目标都是唯一的。显然,上面的示例不起作用,我需要更改什么才能使其正确?

这已经内置。变量
$
some_command.o: some_command.c
other.o: other.c
%.o: %.c
    $(CC) $(CCFLAGS) $< -o $@