這對像我這樣的起動一個簡單的問題,但我能做些什麼來做到像下面Makefile文件,聲明變量在可執行
all: run
run:
DIR=bin/
$(CC) $(LIBRARY) $(INCLUDE) run.o -o $(DIR)[email protected]
感謝。
這對像我這樣的起動一個簡單的問題,但我能做些什麼來做到像下面Makefile文件,聲明變量在可執行
all: run
run:
DIR=bin/
$(CC) $(LIBRARY) $(INCLUDE) run.o -o $(DIR)[email protected]
感謝。
正如您所寫,您可以在一個命令行上爲外殼變量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}
。當然,你可以省略大括號。
爲什麼不去這樣?
DIR=bin/
all: $(DIR)/run
$(DIR)/run:
$(CC) $(LIBRARY) $(INCLUDE) run.o -o [email protected]
那麼,我實際上是在make文件上使用多個獨立的目標。非常感謝你,還有BeSerk。 – Rabbitybunny