2015-10-20 78 views
0

对不起,打扰你们这个,但我是一种吓倒,没有发现任何真正匹配旧线程。我想使用make命令的第一个参数为Makefile里的一个变量的值,使得不是做makefile目标命令行

化妆VAR = ARG1

我可以做

使ARG1

和生成文件内的变量将是TARGET = ARG1。 原因很简单。在我的makefile文件,我需要用它作为

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

而且(如果可能的话),在没有第一个参数的情况下,目标变量必须由默认值设定。它实际上可能吗?

感谢

+0

您是使用GNU make还是其他make实现? – Jens

+0

是GNU make。我忘了说它 – Stefano

回答

1

你可以从$(MAKECMDGOALS)所有命令行的目标是在命令行上指定的所有目标的列表清单(你不应该有这样的假设只是有其中之一,虽然。 ..)。

或者,你可以使用%如下:

%: $(OBJS) 
    @echo making [email protected] 
    ... 

注意,这是因为长的茎尽可能的图案规则,因此,如果没有其他的规则来服务它只会被执行命令行目标(除非有另一个%:规则,在这种情况下它只会运行第一个)。如果您制作多个目标,则每个目标都会运行一次。

+0

它似乎与$(MAKECMDGOALS)一起使用。非常感谢,对于迟到的回复(时区问题)感到抱歉。关于第二种选择,我也想到了这一点,但是我需要设置一个变量TARGET,我不知道该怎么做。 – Stefano