いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

makeで標準入力を受け取って後続処理したい ($$xxx, .ONESHELL:)

概要

よく忘れるので、ここにメモメモ。

サンプルを実行するためのMakefileがあるとして、実行時に場所を打ち込んでもらって

その結果を元に後続処理をしたい場合、以下のようにしてやると出来ます。

default: run

run:
   @read -p "ENTER EXAMPLE NAME: " appname; \
  (cd "$$appname" ; flutter run -d web-server)

ついでに、基本makefileでコマンドを使っていく場合

上のように ; \ でコマンドを継続させておく必要がありますが

.ONESHELL: という名前のスペシャルターゲットが用意されていまして、それを指定すると

default: run

.ONESHELL:
run:
   @read -p "ENTER EXAMPLE NAME: " appname
  (
      cd "$$appname";
      flutter clean;
      flutter pub get;
      flutter format lib/;
      flutter analyze;
      flutter run -d web-server --web-renderer html;
  )

; \ で継続していかなくても、一つのコマンドとして実行してくれます。

何気に便利です。

参考情報

qiita.com

www.gnu.org

devlights.hatenablog.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com