以下はCaffeのMakefileのスニペットです。前提条件のコロン、理解する方法?
TEST_BIN_DIR = build/test
$(TEST_CXX_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CXX_BUILD_DIR)/%.o $(GTEST_OBJ) | $(DYNAMIC_NAME) $(TEST_BIN_DIR)
@ echo LD $<
$(Q)$(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) \
-o [email protected] $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib
の意味はTEST_CXX_BINS
の前提で、コロン(:)何ですか?前提条件の中で別のルールを定義していますか?
これは、標準的な暗黙ルールまたはパターンルールではありません。私はウェブとGNU Makeマニュアルを検索しましたが、参考には何も見つかりません。
良い質問。それはmakefileのバグでしょうか?それは動作しますか?実際、このマニュアルでは、[セミコロンの構文](https://www.gnu.org/software/make/manual/make.html#Rule-Syntax)または注文のみの前提条件が記載されていますが、あなたが記述したものではありません。 – kebs
Makefileは問題なく動作します。 @kebs – nn0p
Aha、マニュアルの説明を参照してください。[静的パターンルール](https://www.gnu.org/software/make/manual/make.html#Static-Usage)を参照してください。私はこの部分を見逃していた。この種の規則はこれまで使わなかった。 – nn0p