70858


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 を生成するルールというのはできないのでしょうか


CC BY-SA 4.0
2020-10-01T07:27:58.883
70857
2020-10-01T07:45:56.613
2020-10-01T07:40:03.057
question
makefile
Makefile の .suffix ルールが認識されない


`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` になっていませんからコピペ禁止で。


CC BY-SA 4.0
2020-10-01T07:43:43.977
70858
2020-10-01T07:43:43.977
8589
70857
answer


追加で認識させるサフィックスを指定する必要があると思います。  
Makefileに以下の記述を追加してみてください。

[code]

    .SUFFIXES: .json .lock
    
[/code]


CC BY-SA 4.0
2020-10-01T07:45:56.613
70859
2020-10-01T07:45:56.613
30745
70857
answer