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 に答える