Make

制定多個目標

  • January 16, 2018

我有這個 Makefile:

P5.obj P5.sym: P5.asm
       lc3as P5.asm

如果 P5.obj 或 P5.sym 已過期,我希望彙程式序執行。但是,刪除 P5.sym 不會導致它重新生成。

我究竟做錯了什麼?

(我假設lc3as P5.asm將生成文件P5.objP5.sym。假設您嘗試執行make。)

預設目標是第一個目標,除非您沒有指定它(取決於 make-dialect)。

例如:

# Makefile
a b:
   echo a > a
   echo b > b

如果你同時執行make這兩個文件a並且b將被創建。如果您刪除b並執行make

`a' is up to date.

因為a目標是預設值。

一般的解決方案是創建一個名稱all在開頭的目標Makefile

all: a b

a b:
  echo a > a
  echo b > b

.PHONY: all

在這種情況下,如果您刪除bmake重新生成它(因為預設目標是all並且它的依賴項是aand b)。

引用自:https://unix.stackexchange.com/questions/417593