【发布时间】:2020-03-01 15:54:44
【问题描述】:
我对带有二级扩展功能的 GNU make 有一些疑问。
这是我的项目结构(仅作为示例)
.
├── build
├── Makefile
└── src
└── a.c
这是我的启用二级扩展的 Makefile
.SECONDEXPANSION:
%.o: $$(subst build,src,%.c)
@echo $^
我输入make build/a.o,GNU make 抱怨:
make: *** No rule to make target `build/a.o'. Stop.
看起来 make 没有找到先决条件,所以它停止了。
为了进一步调试,我在build目录中添加a.c并重新输入make build/a.o,GNU make输出这些
build/a.c
输出很奇怪,因为我预计输出将是 src/a.c 而不是 build/a.c
似乎内置文本功能subst不能二次展开。
有人知道我的 Makefile 出了什么问题吗?
谢谢
【问题讨论】: