未在makefile中计算的百分比符号

时间:2017-04-14 10:55:44

标签: makefile

我是makefiles等的新手。

该文件如下所示:

COMPILER_NAME = gcc
COMPILER_FLAGS =

PATH_OBJECTS = ./obj
PATH_SOURCES = ./src

$(PATH_OBJECTS)/%.o: $(PATH_SOURCES)/%.c
    $(info Generating object files...)
    @$(COMPILER_NAME) $(COMPILER_FLAGS) -c $< -o $@

cleanup: $(PATH_OBJECTS)/%.o
    $(info Final cleanup...)
    @rm -rf $<

当我尝试实际制作项目时,我收到此错误:     make:***没有规定制作目标&#39; obj /%。o&#39;,需要清理&#39;。停止。

就像%通配符未正确评估一样。请帮帮我。

1 个答案:

答案 0 :(得分:2)

模式规则有&#39;%&#39;在目标中,可能在一个或多个先决条件中。你有什么:

cleanup: $(PATH_OBJECTS)/%.o
    ...

不是模式规则,而且&#39;%&#39;不是通配符,它​​只是一个角色。这是一个普通的规则,它会查找名为&#34; ./ obj /%&#34; 的文件作为先决条件,并且没有此类文件。

如果您希望cleanup删除该目录中的所有目标文件,则无需任何此类复杂功能。就这样做:

cleanup:
    @echo Final cleanup...
    @rm -rf $(PATH_OBJECTS)/*.o

请注意,这使用shell命令echo,而不是Make命令info,以及shell通配符&#39; *&#39;,而不是Make通配符&#39;%& #39;

如果您希望目标依赖于您可以构建的所有目标文件,则必须自己构建该列表;它并不难,但它看起来不像你需要的东西。