Makefile 从*任一*源文件生成

Makefile 从*任一*源文件生成,makefile,gnu-make,Makefile,Gnu Make,我有一个规则: dist/node/%.js: src/%.node.js yarn.lock .babelrc | $(NODE_DIST_DIRS) $(BIN)/babel $< -o $@ 但是,我想从src/fs.node.js或src/fs.js编译dist/node/fs.js,以存在的为准 原因是我有一些共享文件,扩展名是.js(在浏览器和节点中都可以使用),然后是更具体的文件,扩展名是.node.js。如果有更具体的版本,我想使用它 我不知道如何将条件依赖项与%

我有一个规则:

dist/node/%.js: src/%.node.js yarn.lock .babelrc | $(NODE_DIST_DIRS)
    $(BIN)/babel $< -o $@
但是,我想从
src/fs.node.js
src/fs.js
编译
dist/node/fs.js
,以存在的为准

原因是我有一些共享文件,扩展名是
.js
(在浏览器和节点中都可以使用),然后是更具体的文件,扩展名是
.node.js
。如果有更具体的版本,我想使用它


我不知道如何将条件依赖项与
%
结合使用。这可能吗?我可以优先考虑依赖项并选择最佳匹配项吗?

我想您可以尝试使用,但这些不能是模式规则


作为另一种选择,考虑.< /P> < P>我想你可以尝试使用A,但是这些不能是模式规则。


作为一种选择,考虑.

在单一规则中没有办法做到这一点。您必须使用不同的先决条件编写两个规则,但在其他方面相同:

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 $@
dist/node/%.js:src/%.node.js warn.lock.babelrc |$(node_dist_DIRS)
$(BIN)/巴别塔$<-o$@
dist/node/%.js:src/%.js warn.lock.babelrc |$(node_dist_DIRS)
$(BIN)/巴别塔$<-o$@

在一条规则中无法做到这一点。您必须使用不同的先决条件编写两个规则,但在其他方面相同:

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 $@
dist/node/%.js:src/%.node.js warn.lock.babelrc |$(node_dist_DIRS)
$(BIN)/巴别塔$<-o$@
dist/node/%.js:src/%.js warn.lock.babelrc |$(node_dist_DIRS)
$(BIN)/巴别塔$<-o$@