我有这个制定规则:
dist/node/%.js: src/%.node.js yarn.lock .babelrc | $(NODE_DIST_DIRS)
$(BIN)/babel $< -o $@
当我的源文件以.node.js
结尾时,它可以正常工作。如,
$ make dist/node/fs.js
mkdir -p dist/node/
node_modules/.bin/babel src/fs.node.js -o dist/node/fs.js
但是,我想从 dist/node/fs.js
或src/fs.node.js
编译src/fs.js
,无论哪个存在。
原因是我有一些共享文件只有.js
扩展名(在浏览器和节点中都有效),然后是更具体的.node.js
扩展名文件。如果有更具体的版本,我想使用它。
我不知道如何与%
结合使用条件依赖项。这可能吗?我可以优先考虑依赖关系并采取最佳匹配吗?
答案 0 :(得分:1)
我想您可以尝试使用double-colon rule,但这些不能是模式规则。
作为替代方案,请考虑generating and including a makefile containing just those dependencies。
答案 1 :(得分:1)
单一规则无法做到这一点。您必须编写两个具有不同先决条件的规则,否则相同:
dist/node/%.js: src/%.node.js yarn.lock .babelrc | $(NODE_DIST_DIRS)
$(BIN)/babel $< -o $@
dist/node/%.js: src/%.js yarn.lock .babelrc | $(NODE_DIST_DIRS)
$(BIN)/babel $< -o $@