さて、実行する必要があるのは、最新のビルド以降に.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) $< $@