0

我将 .coffee 文件分开,并且已经使用 Makefile 将它们编译成多个相应的 .js 文件。我的规则:

tmp/coffee/%.js: src/js/%.coffee
    coffee --compile --output $(@D) $?

它看起来像这样:

$ make static
coffee --compile --output tmp/coffee/global src/js/global/admin.coffee
coffee --compile --output tmp/coffee/global src/js/global/ads.coffee

我想优化我的构建过程,以便一次调用咖啡编译器来一次编译所有更新的文件。这对于干净的构建尤为重要。

所以它看起来像这样:

$ make static
coffee --compile --output tmp/coffee/global src/js/global/ads.coffee src/js/global/admin.coffee
4

1 回答 1

1

您已经在使用$?,您真正需要的是使目标依赖于所有文件。也许您想保留一个单独的标志文件,例如.built

.built: $(wildcard src/js/global/*.coffee)
        coffee --compile --output tmp/coffee/global $?
        touch $@

您可能想要重构现有的 Makefile,这样您就没有任何代码重复。

我假设您的所有文件都global像您的示例所说的那样,但不是您现有的代码。如果有多个子目录,则不能一次全部编译(--output估计每个子目录的参数应该不同)。

于 2012-05-25T08:08:28.940 回答