【C++ Makefile】問題解決:(常見問題) make: Nothing to be done for `all'

前言

在 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