1

好的,所以需要做的是,只有当它的 .test 自最近一次构建以来发生了变化时,makefile 才必须将 .test 编译成 .vtt。我没有直接指向 .test 文件的路径,但我可以获得它们的列表,并且可以从中生成新的 .vtt 文件的假定路径。到目前为止,我所拥有的是:

SRC_DIR = .
TEST_DIR = $(SRC_DIR)/test
SPEC_DIR = $(TEST_DIR)/spec
OBJ_DIR = $(SRC_DIR)/objdir
OBJ_DIR_SPEC = $(OBJ_DIR)/test/spec
TEST_SRC := $(shell find $(SPEC_DIR) -name '*.test' -print)                                                                    
VTT_SRC := $(subst $(SRC_DIR)/test,$(OBJ_DIR)/test,$(subst .test,.vtt,$(TEST_SRC)))   
RUN_STIP_VTT = $(SPEC_DIR)/strip-vtt.py

%.vtt : %.test:
   $(PYTHON) $(RUN_STIP_VTT) $< $@

$(VTT_SRC): $(TEST_SRC)
   $(PYTHON) $(RUN_STIP_VTT) $< $@

objdir:
    mkdir $(OBJ_DIR)

check-js: objdir $(VTT_SRC)
    $(PYTHON) ./test/spec/run-tests-js.py $(OBJ_DIR_SPEC)

TEST_SOURCE 是已找到的 .test 文件的列表。VTT_SOURCE 是转换为 .vtt 格式的测试文件列表和对象目录。我需要能够在 TEST_SOURCE 中找到 .vtt 文件依赖项 .test 文件,并以某种方式告诉 makefile 有关该连接的信息。

最终通过以下更改修复它:

check-js: objdir $(VTT_SRC)
        $(PYTHON) ./test/spec/run-tests-js.py $(OBJ_DIR_SPEC)

$(OBJ_DIR)/%.vtt : $(SRC_DIR)/%.test
    @$(PYTHON) $(STIP_VTT) $< $@
4

2 回答 2

2

我会使用静态模式规则:

$(VTT_SRC): $(OBJ_DIR)/%.vtt : $(SRC_DIR)/%.test
    $(PYTHON) $(RUN_STIP_VTT) $< $@
于 2012-09-30T22:51:50.860 回答
0

Make 中的VPATH构造可能是您正在寻找的。

于 2012-09-30T18:40:23.977 回答