2013-07-23 12 views

回答

0

正如您所寫,您可以在一個命令行上爲外殼變量DIR分配內容。在下一行中,您擴展了make變量DIR。這是行不通的,因爲這兩行是由不同的shell執行的,並且在任何情況下,make在運行shell之前擴展$(DIR),並且DIR不是make變量。

你可以把它像這樣工作的:

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

反斜線意味着兩行作爲一個處理(以至於需要分號)。 $${DIR}表示法被擴展爲make${DIR}(更確切地說,$$擴展到$make忽略),然後shell從先前設置的值中擴展${DIR}。當然,你可以省略大括號。

但是,answer通過BeSerK可能是你在找什麼。

+0

那麼,我實際上是在make文件上使用多個獨立的目標。非常感謝你,還有BeSerk。 – Rabbitybunny

1

爲什麼不去這樣?

DIR=bin/ 
all: $(DIR)/run 
$(DIR)/run: 
     $(CC) $(LIBRARY) $(INCLUDE) run.o -o [email protected]