【问题标题】:makefile target command linemakefile 目标命令行
【发布时间】:2015-10-20 17:27:22
【问题描述】:

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

使 var=arg1

我可以的

制作 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 变量设置为默认值。真的可以吗?

谢谢

【问题讨论】:

  • 您使用的是 GNU make 还是其他一些 make 实现?
  • 是的 GNU make。我忘了说

标签: command-line makefile target


【解决方案1】:

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

或者,您可以使用%,如下所示:

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

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

【讨论】:

  • 它似乎适用于 $(MAKECMDGOALS)。非常感谢,很抱歉回复晚了(时区问题)。关于第二个选项,我也想过,但是我需要设置一个变量 TARGET 并且我不知道该怎么做。
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多