Windows の make でコマンドの挙動がおかしくなったときの解決策

問題

Windows にGnuMake を入れて使っていたところ、ある日make コマンドを実行したら以下のようなエラーが出た。

dir: cannot access '/s': No such file or directory
dir: cannot access '/b': No such file or directory

さらに

/bin/sh: del: command not found

とも。

なるほど、これはmakefile に書いてある$(shell ) の実行にcmd.exe ではなく/bin/sh が使われているゾ…

と思ってmakefile に以下を追加してみた。

SHELL=cmd

しかし結果は変わらず。

原因

しばしハマったけれど、環境変数のPATH を確認したところMinGW のパスが入っていて、そもそもmake コマンドがMinGW のmake を呼び出していて、GNUMake for Windows が使われていなかった。

対策

ユーザ環境変数のPATH に入っていたMinGW のパスを削除し、代わりにGNUMake for Windows のパスを追加。

まとめ

UNIX 系のツールをWindows にインストールすると、インストーラで自動的にPATH が追加されたりするケースがあるので、インストーラのオプションは読み飛ばさない方が良いですね。身近なところではGit for windows などでもインストール時のオプションによってcmd の挙動が変わったりします。

Windows コマンドが正しく動作しないときは何らかのターミナルエミュレータが動いている可能性を疑って調査するとよさそうです。

Windows

Posted by Ken Taguma