Makefile,在可执行文件中声明变量

时间:2013-07-23 02:17:31

标签: makefile

对于像我这样的初学者来说,这是一个简单的问题,但我可以做些什么,如下面的

all: run
run:
        DIR=bin/
        $(CC) $(LIBRARY) $(INCLUDE) run.o -o $(DIR)$@

感谢。

2 个答案:

答案 0 :(得分:1)

为什么不这样?

DIR=bin/
all: $(DIR)/run
$(DIR)/run:
        $(CC) $(LIBRARY) $(INCLUDE) run.o -o $@

答案 1 :(得分:0)

如上所述,您可以在一个命令行上分配shell变量DIR。在下一行中,您展开了make变量DIR。这不起作用,因为两行由不同的shell执行,并且在任何情况下,make在运行shell之前展开$(DIR)并且DIR不是make变量

你可以让它像这样工作:

all: run
run:
        DIR=bin/; \
        $(CC) $(LIBRARY) $(INCLUDE) run.o -o $${DIR}$@

反斜杠意味着两条线被视为一条线(以至于需要分号)。 $${DIR}符号被make扩展为${DIR}(更确切地说,$$扩展为$make忽略{DIR} ),然后shell从先前设置的值扩展${DIR}。当然,你可以省略大括号。

然而,answer BeSerK可能正是您所寻找的。

相关问题