Makefile で basename や strip を使う(自分用メモ)

こんな 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 $<))

としてやると,期待した通りの動作になります.

コメントする

コメントを残す