PatternRule(パターンルール)
POINT
[.] File 数が増えるような巨大な Project で利用する
[.] 明示的に指定するのは無理がある
[.] .c -> .o といった 慣例があるおかげで Rule の生成を自動化できる
DESC
拡張子から依存関係が適用される
make -p で組み込み rule 表示
模様 == パターン
%.obj: %.cpp
POINT
[.] 組み込み rule は Pattern Rule により記述されている
%.obj: %.cpp
$(COMPILE_c) $(OUTPUT_OPTION) $<
%: %.obj
$(LINK.o) $^ $(LOADLIBS) -o $@
Make は target 名から上記のルールが適用できるか検索
% の部分をそのまま おきかえる
test: main.cpp
target = main # main.o はないかな ?
2. main.o はない -> main.o を作成するルールはないか ?
3. 組み込みルールがあった -> main.cpp はないかな ?
4. あった -> Depend Graph 完成
-> つまり makefile:
組み込みルールのテスト
// main.cpp
int main() {
printf( "make test\n" );
return 0;
}
make main
./main.exe
pattern
DESC
%.cpp
main%.o
TIP
make が最初に rule を探すのは、pattern rule の target
%: %.cpp
$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@