ディレクトリを遡ってMakefileを探してそのディレクトリでmakeを実行するmkを作った
makeコマンド、rakeみたいにディレクトリを遡ってMakefileを探してくれないので面倒
— k1LoW (@k1LoW) 2019年2月2日
Goを書くようになってからなのか、GMOペパボに入ってからなのか、make
を実行することが多くなったのですが、make
はMakefileがあるディレクトリで実行する必要があります(もしくは -C
オプションでMakefileのあるディレクトリを指定)。
ただ、rake
や npm
に慣れてしまっているからか、ディレクトリ関係なく make
を実行してしまい *1、そのたびに make: *** No targets specified and no makefile found. Stop.
を突きつけられてしまっていました。
というわけで、ディレクトリを遡ってMakefileを探してそのディレクトリで make
を実行するだけのコマンド
mk
を作りました。
インストール
go get
か Homebrew でインストールできます。
$ go get github.com/k1LoW/mk
or
$ brew install k1LoW/tap/mk
使い方
make
の代わりに mk
を使うだけです。
$ cat Makefile hello: @echo "Hello make" $ cd path/to/deep/ $ cat Makeflie cat: Makefile: No such file or directory
上記のようにMakefileのあるディレクトリでないところで、make
を実行してもエラーになりますが
$ make hello make: *** No targets specified and no makefile found. Stop.
mk
だとディレクトリを遡ってMakefileを探して make
を実行できます。
$ mk hello (in /path/to/deep) Hello make
alias make='mk'
として使ってみようと思います。