我有一種情況,我需要根據遠程文件執行make中的規則。這是我想要做的一個例子(實際的Makefile是不相關的方式在這裏有很多更復雜):依賴遠程文件中的make
URL = http://cdn.sstatic.net/stackoverflow/img/favicon.ico
stackoverflow.png: favico.ico modified | check_modified
convert favicon.ico [email protected]
check_modified: modified
@echo Icon was modified. Downloading.
rm -f favicon.ico
wget $(URL)
.PHONY: check_modified
favico.ico: check_modified
modified:
touch -d "`wget --spider -S $(URL) 2>&1 | sed -n 's/.*Modified: //p'`" [email protected]
的理念是:
- 規則建
modified
應該總是被運行。該規則的功能是將文件的修改時間更改爲與URL所指向的修改時間相同。 - 之後,我想要
modified
就依賴性而言正常運行。如果modified
比favicon.ico
更新,我想檢索新文件,然後讓依賴關係導致重新創建目標文件。
作爲一個皺紋,在某些應用程序中,我必須手動檢索文件。在這些情況下,我想只有一條規則會觸發並告訴我手動下載文件,但這不會影響構建目標。例如,如果我要轉換的源圖像位於網站登錄名後面,則需要手動登錄到網站並將其下載到固定位置,然後重新運行make。
一切我已經試過兩種:
- 無法查詢的網址,如果目標是最新的,或者
- 總是檢查URL和重建目標,即使
modified
是不是更近比目標。
任何智慧的話?