makefile目标命令行

makefile target command line

很抱歉打扰你们,但我有点害怕,没有从旧线程中找到任何真正匹配的内容。我想使用 make 命令的第一个参数作为 makefile 中变量的值,而不是做

make var=arg1

我能做到

make arg1

在 makefile 中,变量将为 TARGET=arg1。 原因很简单。在我的 makefile 中,我需要将其用作

$(TARGET): $(OBJS) @echo -e "\n\n\t\t*** Compiled $(TARGET) successfully! ***\n" ; $(FL) $(LFLAGS) -o $(BUILDS_DIR)$@ \ $(OBJS) \ $(LIBS) @echo -e "\n\n\t\t*** Linking $(TARGET) completed! ***\n"

此外(如果可能),在没有第一个参数的情况下,TARGET 变量必须设置为默认值。这真的可能吗?

谢谢

您可以从 $(MAKECMDGOALS) 获得所有命令行目标的列表,这是在命令行上指定的所有目标的列表(不过您不应该假设只有其中一个。 ..).

或者,您可以按如下方式使用 %

%: $(OBJS)
    @echo making $@
    ...

请注意,这是一个具有尽可能长的主干的模式规则,因此只有在没有其他规则为命令行目标提供服务时才会执行(除非有另一个 %: 规则,在这种情况下它只会 运行 第一个)。如果您设置多个目标,则每个目标 运行 一次。