make:SECONDEXPANSION的范围

make: The scope of SECONDEXPANSION

makefile中二次扩展的作用域是什么?

如果我输入:

.SECONDEXPANSION:

这种变化在哪里停止?从那时起它是否适用于所有目标?还是只到下一个目标?

此后适用于所有目标。来自 the docs:

...All the prerequisites of the targets defined after the special target are expanded a second time.

如果您对文档有疑问,可以尝试一下。修改文档中的示例:

.SECONDEXPANSION:
main_OBJS := main.o try.o test.o
lib_OBJS := lib.o api.o

main: $$($$@_OBJS)
    @echo prerequisites are $^

lib: $$($$@_OBJS)
    @echo prerequisites are $^