首页 > 解决方案 > 规则未用先决条件 % 替换目标 %

问题描述

该项目实际上有大量不同的源文件所在的目录,所以我简化了一点。

SOURCES 变量包含:

src/main.cpp src/test.cpp

目标规则 $(BUILD_PATH)%.o 扩展为:

linux_build/test.o

所以我试图制定一个接受目标的规则,查看“nodir”部分并尝试将其与 SOURCES 列表中的相应条目匹配。然后它使用它作为先决条件:

$(BUILD_PATH)%.o: $(strip $(foreach path, $(SOURCES), $(if $(findstring %.cpp,$(path)), $(path),)))
    $(CL) $(CL_FLAGS) $(INC) $< -o $@

似乎不起作用的是“%.cpp”中的%。我在这里做错了什么?

标签: makefile

解决方案


推荐阅读