As a build system make wasn't really designed to handle stuff like partial rebuilds, caching, or distributed building. Modern build systems like bazel are just orders and orders of magnitude faster and better for complex projects.
The whole point of make is to handle partial rebuilds. It is why it was invented in the first place.
"Make originated with a visit from Steve Johnson (author of yacc, etc.), storming into my office, cursing the Fates that had caused him to waste a morning debugging a correct program (bug had been fixed, file hadn't been compiled, cc *.o was therefore unaffected). As I had spent a part of the previous evening coping with the same disaster on a project I was working on, the idea of a tool to solve it came up. It began with an elaborate idea of a dependency analyzer, boiled down to something much simpler, and turned into Make that weekend."
If they had rebuilt the whole project, make would not have been needed, However because they wanted to do partial builds and the manual process had downsides make was invented.