前言
在 makefile 學習的過程中,基本上應該都會踩過一次下面敘述的雷,
我們來好好說明這是什麼意思。
make: Nothing to be done for `all'
這個要講到 makefile 的邏輯,
makefile 只有在「兩種情況」下才會產生新檔案。
- 目標檔案不存在
- 「目標檔案依賴的檔案」比「目標檔案」更新
第一點很好懂,不存在就是什麼都要從頭開始建。
第二點講之前,我們先理解 Makefile 的語法:
- 目標檔案:依賴的檔案(可為多個…, 依賴的檔案1 依賴的檔案2)
換句話說,如果當「任何的檔案都沒有被更新時」,「make 這個指令就會覺得什麼事情都不需要做」。
這就是「make: Nothing to be done for `all’」產生的原因。
要怎麼解決上面的問題?
很簡單,但也最笨的方法就是,
每一次都先「make clean,再 make」,就沒問題了。
不過自己要先把 make clean 內容寫正確啊!! 不然是沒辦法避免這個錯誤的!
make clean
make # or make all