对于像我这样的初学者来说,这是一个简单的问题,但我可以做些什么,如下面的
all: run
run:
DIR=bin/
$(CC) $(LIBRARY) $(INCLUDE) run.o -o $(DIR)$@
感谢。
答案 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}
。当然,你可以省略大括号。