Bug of Makefile in MinGW
昨天踩到了一個讓人很沮喪的 bug。
一般來說在 Makefile 我們可以用 $(shell pwd) 拿到像這樣 style 的路徑
1 2 | $(shell pwd) /home/yurenju/gaia |
如果要在 Windows 的 MinGW 底下用的話,可以用大寫 W 參數可以拿到這樣 style 的路徑:
1 2 | $(shell pwd -W) C:/home/yurenju/gaia |
然後昨天踩到的雷是,如果你用 -include
引入了另外一個 Makefile 後(比如說 common.mk),你在 common.mk 裡面執行 $(shell pwd -W)
竟然會出錯!而且同樣的用法如果沒有用 -include 的時候是完全會動的。
解法呢?感謝 PostgreSQL 的先烈告訴我們了答案,用 sh -c
去執行竟然就好了
1 | $(shell sh -c "pwd -W") |
見鬼了,這哪招啊...