使用Makefile中的现有“依赖列表”文件

时间:2013-12-21 19:51:26

标签: makefile dependencies

我有一个Web应用程序,我正在尝试转换为使用Makefile进行构建。

我有一个“输入”目录,其中包含源文件以及定义源文件串联的“列表”文件:

js/common.js
js/other_utils.js
js/component1.js
js/component2.js
js/app_logic.js
js/admin_logic.js
js/app.js.list     # common.js other_utils.js component1.js component2.js app_logic.js
js/admin.js.list   # common.js admin_logic.js

我想“输出”文件由这些列表文件确定,如下所示:

static/app.js
static/admin.js

...仅在必要时重建目标(例如,如果修改了static/admin.jsjs/admin.js.listjs/common.js,则会重建js/admin_logic.js。)

有没有办法在不生成包含makefile的“额外”的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

使用GNU Make的二次扩展功能找到了一种方法!这让我可以根据“主”列表文件先决条件的内容创建一个先决条件列表:

.PHONY: js
jsfiles = $(shell ls -1 js/*.js.list)
js: $(jsfiles:js/%.js.list=static/%.js)

.SECONDEXPANSION:
static/%.js: js/%.js.list $$(shell cat js/%.js.list | sed 's/^/js\//')
    echo "compile" $^