Makefile の .suffix ルールが認識されない


AWS Lambda のデプロイをするときに  
PHP のライブラリリスト (composer.json) を更新したときだけ  
composer install をし直してからデプロイするみたいな Makefile を以下のように書いてみたんですが

[code]

    deploy: src/composer.lock
        sam deploy ...
    .json.lock:
        cd $(*D); composer install
    
[/code]

[code]

    # make deploy
    make: *** No rule to make target `src/composer.lock', needed by `deploy'.  Stop.
    
[/code]

というエラーになってしまいます

.c.o っていうサンプルをよく見かけるんですが .json.lock という書き方で  
src/composer.json から src/composer.lock を生成するルールというのはできないのでしょうか




`make` が最初から知っているビルトインルールに `.json.lock` はなさそうなので `.SUFFIXES:` を明示する必要がありそうです。

[code]

    .SUFFIXES: .json .lock
    .json.lock:
         なんちゃら
    deploy: src/composer.lock
    
[/code]

であるなら `deploy` を作るのには `src/composer.lock` が必要 `.SUFFIXES:` によって
`src/composer.json` から `src/composer.lock` が作れると判断され `なんちゃら` の部分が実行されます。  
# 入力する都合で `なんちゃら` 行の最初は `TAB` になっていませんからコピペ禁止で。




`make` が最初から知っているビルトインルールに `.json.lock` はなさそうなので `.SUFFIXES:` を明示する必要がありそうです。

[code]

    .SUFFIXES: .json .lock
    .json.lock:
         なんちゃら
    deploy: src/composer.lock
    
[/code]

であるなら `deploy` を作るのには `src/composer.lock` が必要 `.SUFFIXES:` によって
`src/composer.json` から `src/composer.lock` が作れると判断され `なんちゃら` の部分が実行されます。  
# 入力する都合で `なんちゃら` 行の最初は `TAB` になっていませんからコピペ禁止で。

