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 $@
...
请注意,这是一个具有尽可能长的主干的模式规则,因此只有在没有其他规则为命令行目标提供服务时才会执行(除非有另一个 %: 规则,在这种情况下它只会 运行 第一个)。如果您设置多个目标,则每个目标 运行 一次。
很抱歉打扰你们,但我有点害怕,没有从旧线程中找到任何真正匹配的内容。我想使用 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 $@
...
请注意,这是一个具有尽可能长的主干的模式规则,因此只有在没有其他规则为命令行目标提供服务时才会执行(除非有另一个 %: 规则,在这种情况下它只会 运行 第一个)。如果您设置多个目标,则每个目标 运行 一次。