有沒有辦法在Makefile中簡化這種重複?如何刪除Makefile中的重複?
duo = ./node_modules/.bin/duo
build: lib/background/build lib/page/build lib/popup/build
lib/background/build: lib/background/build/build.js lib/background/build/build.css
lib/page/build: lib/page/build/build.js lib/page/build/build.css
lib/popup/build: lib/popup/build/build.js lib/popup/build/build.css
lib/background/build/build.js: lib/background/index.js node_modules component.json
@mkdir -p lib/background/build
@$(duo) lib/background/index.js > lib/background/build/build.js
lib/page/build/build.js: lib/page/index.js node_modules component.json
@mkdir -p lib/page/build
@$(duo) lib/page/index.js > lib/page/build/build.js
lib/popup/build/build.js: lib/popup/index.js node_modules component.json
@mkdir -p lib/popup/build
@$(duo) lib/popup/index.js > lib/popup/build/build.js
lib/background/build/build.css: lib/background/index.css node_modules component.json
@mkdir -p lib/background/build
@$(duo) lib/background/index.css | $(myth) > lib/background/build/build.css
lib/page/build/build.css: lib/page/index.css node_modules component.json
@mkdir -p lib/page/build
@$(duo) lib/page/index.css | $(myth) > lib/page/build/build.css
lib/popup/build/build.css: lib/popup/index.css node_modules component.json
@mkdir -p lib/popup/build
@$(duo) lib/popup/index.css | $(myth) > lib/popup/build/build.css
基本上,我想從頂層運行一個簡單的命令make build
,並在必要時僅重建這些子項目。我想不必爲每個子項目使用Makefile,因爲這也是重複的。我試過的與通配符路徑有關的所有東西都沒有解決,所以想知道是否有辦法做到這一點。例如,我試着做類似這樣的事情(類似於js和css),但沒有運氣:
js = $(shell find lib test -type f -name '*.js' ! -path "*build.js")
$(js)/build/build.js: node_modules component.json
# somehow get the directory such as lib/background based on the make command?
local dir=$(shell dirname $(shell dirname [email protected]))
@mkdir -p $(dir)/build
@$(duo) $(dir)/index.js > $(dir)/build/build.js
任何想法如何使這個幹?
企圖是不會因爲'$(JS)工作'是文件名列表,因此將目標擴展插槽添加到列表中最後的文件名後附加'/ build/build.js'的文件名列表。 – 2014-08-27 20:56:16