可以从不同的源文件扩展名构建目标时进行干燥

时间:2019-02-15 14:59:46

标签: makefile gnu-make

我正在从.ts和.tsx文件构建.js文件。它们的构建方式完全相同,理想情况下,我不想重复规则。现在,可以进行以下操作:

$(out)/%.js: %.ts
    @mkdir --parents $(@D)
    BABEL_ENV=node babel $(<) --out-file $(@) --source-maps

$(out)/%.js: %.tsx
    @mkdir --parents $(@D)
    BABEL_ENV=node babel $(<) --out-file $(@) --source-maps

是否可以告诉make在先决条件列表中查找.ts或.tsx?

1 个答案:

答案 0 :(得分:0)

不,没有办法。

您可以通过将配方放入变量来减少重复:

define BUILD_JS
@mkdir --parents $(@D)
BABEL_ENV=node babel $(<) --out-file $(@) --source-maps
endif

$(out)/%.js: %.ts
        $(BUILD_JS)

$(out)/%.js: %.tsx
        $(BUILD_JS)