My code works, I don’t know why.

國王的耳朵是驢耳朵

Makefile中Command敘述的Shell變數存取

| Comments

想說寫一個loop自動make變數內的目錄

錯誤的Makefile
1
2
3
4
DIRS = libs src

all:
  for i in ${DIRS}; do make -C $i; done

結果跑出來和想像不同

make結果
1
2
for i in lib src; do make -C ; done
make: option requires an argument -- 'C'

原因是$本身在Makefile有特殊意義。要使用$$才能在command敘述中顯示$,因此改進如下

正確的Makefile
1
2
3
4
DIRS = libs src

all:
  for i in ${DIRS}; do make -C $$i; done

參考資料

Comments