有没有办法在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