用于自动列出目标文件的 GNU make 替换命令

Pro*_*ica 3 makefile

一种常见的 makefile 有这样一行:

OBJS=something.o other.o third.o progname.o

progname: $(OBJS)
Run Code Online (Sandbox Code Playgroud)

然后你会跑make progname。但是 GNU Make 也可以从它在当前目录中看到的所有 c 文件中生成 o 文件本身的列表。这是怎么做的?

基本上,我希望能够将 C 文件添加到目录中,而无需更改 makefile。

(例如是通过一些shell-magic,还是有一个内置函数?)

Pro*_*ica 5

也可以这样做:

SRCS = $(wildcard *.c)
OBJS = $(SRCS:.c=.o)

progname: $(OBJS)
Run Code Online (Sandbox Code Playgroud)

如果其中包含的目标文件main()是“progname.o”,则效果很好。