make的技巧是從結束開始,用你想要創建的東西,然後向後走向開始,看看事情已經發生了什麼變化。
那麼,到底什麼是:你想製造什麼?根據你的例子,我們將推斷你想創建一個名爲lectures.tar.gz
的壓縮tar文件。所以,我們需要一個目標:
lectures.tar.gz:
什麼進入tar文件? PDF文件,而您也已經發現瞭如何計算到OBJ
變量,所以那些東西必須被列爲lectures.tar.gz
先決條件:
lectures.tar.gz: $(OBJ)
什麼是該目標的祕訣是什麼?它應該創建一個包含所有文件的名稱的tar文件。一種方法是這樣的:
lectures.tar.gz: $(OBJ)
tar czf lectures.tar.gz $(OBJ)
的另一種方法,使用automatic variables更通用的,應該是:
lectures.tar.gz: $(OBJ)
tar czf [email protected] $^
現在,你如何創建OBJ
文件?對於每一個你需要從.ppt
版本複製它。由於您使用的是GNU make(通過使用wildcard
等功能可以證明),您可以使用pattern rule來實現此功能;該模式是這樣的:
%.pdf : %.ppt
cp $< [email protected]
這種模式告訴make如何從任意文件X.ppt
建立一個文件X.pdf
,具有cp
命令:在這種情況下,自動變量$<
和[email protected]
需要,因爲你不知道名。這是一個隱含的規則,因爲名稱沒有明確列出,但由模式隱含。
現在您如何構建.ppt
文件?你不這樣做,因爲它們是源文件,所以你完成了!
哦,是的,你爲什麼要這樣做?爲什麼不是傳統的shell腳本?祝你好運。 – shellter
@shellter我已經做了一個shell腳本。這是作業。我必須創建一個shell腳本和一個makefile,兩者完全相同,我不知道如何處理Makefile –