こんな Makefile があったとします:
.PHONY : aaa aaa : bbb.hs ghc bbb.hs ./bbb
Makefile に少し慣れてくると,$<
を使って
.PHONY : aaa aaa : bbb.hs ghc $< ./bbb
のように書くかもしれませんが,今度は ./bbb
の箇所が気になります.しかし,コマンド basename を使って
### DOES NOT WORK .PHONY : aaa aaa : bbb.hs ghc $< ./$(basename .hs $<)
としてやってもうまくいきません.先頭に空白が残るからです.そこで Make のコマンド strip を使って
aaa : bbb.hs ghc $< ./$(strip $(basename .hs $<))
としてやると,期待した通りの動作になります.