Shell
makefile 外殼模式擴展:如何?
我發現了 make 的一個有趣的“功能”
DIR_INPUT=/測試 測試: # 測試日期(應該是昨天) 測試 !-z "${日期}" ls -lad ${DIR_INPUT}/{a,c}
但它似乎以一種奇怪的方式工作:
PROMPT# 進行測試 # 測試日期(應該是昨天) 測試 !-z“20100120” ls -lad /test/{a,c} /test/{a,c}:沒有這樣的文件或目錄 *** 錯誤程式碼 2 製作:致命錯誤:目標“測試”的命令失敗 迅速的#
當然,如果我從我的 shell 作品中發出ls -lad /test/{a,c} 。
問題:如何讓 make 像 shell 一樣評估這種模式?
您可以使用 shell 函式 $(shell touch {a..c}) 來執行此操作,(也可以使用萬用字元函式?):
kbrandt@kbrandt-opadmin:~/scrap/make$ ls foo kbrandt@kbrandt-opadmin:~/scrap/make$ vim foo kbrandt@kbrandt-opadmin:~/scrap/make$ ls foo kbrandt@kbrandt-opadmin:~/scrap/make$ cat foo files: $(shell touch {a..c}) kbrandt@kbrandt-opadmin:~/scrap/make$ make -f foo make: `files' is up to date. kbrandt@kbrandt-opadmin:~/scrap/make$ ls a b c foo kbrandt@kbrandt-opadmin:~/scrap/make$