Se il tuo programma consiste in pochi file che possono essere compilati con una semplice riga di comando che richiama il compilatore, allora make potrebbe essere superfluo. Tuttavia, in progetti di grandi dimensioni potresti avere dozzine di file che richiedono opzioni di compilatore e linker complesse, quindi make o uno strumento simile diventa una necessità. Considerare, se si dispone di un progetto con 50 file di origine C ++ e si modifica solo uno di essi, non si desidera che vengano ricompilati tutti. Preferiresti semplicemente ricompilare l'unico file che è cambiato e ricollegarti ai file oggetto esistenti per il resto. Strumenti come make si occupano automaticamente di faccende del genere.
Il linguaggio make ha un numero di verruche e non penso che sia il linguaggio di programmazione preferito da nessuno. È anche molto complicato scrivere un makefile che funzioni su più piattaforme, ad esempio Linux, OS X e Windows. Strumenti come cmake possono essere utilizzati per generare makefiles che funzionerà su più piattaforme e ti consente di descrivere il processo di creazione del tuo software in una lingua che è discutibilmente meno brutta di make corretta.