Die Aussage ist falsch. In der Tat besteht der ganze Grund make
(und ähnlich), weil es falsch ist - sie minimieren den Aufwand für die Neuerstellung einer Anwendung, indem sie verfolgen, welche Quelldateien sich geändert haben, und nur die von der Quelle abhängigen Objektdateien neu erstellt Dateien, die sich geändert haben. Objektdateien, die aktuell sind, werden einfach in Ruhe gelassen.
Sobald alle Objektdateien auf dem neuesten Stand sind, werden sie miteinander verknüpft, um die endgültige ausführbare Datei zu erzeugen (und dies wiederum wird normalerweise nur ausgeführt, wenn mindestens eine Objektdatei neuer als die aktuelle ausführbare Datei ist).
Natürlich ist es auch möglich, make
für Jobs zu verwenden, die nicht mit dem Kompilieren und Verknüpfen zusammenhängen, aber das ist mit ziemlicher Sicherheit der Gebrauch, den sie am häufigsten verwenden, und (zumindest größtenteils) der Grund, warum sie erfunden wurden (Die einzige offensichtliche Änderung ist, dass sie ursprünglich hauptsächlich für C-Quellcode und nicht für C++ verwendet wurden, aber in dieser Hinsicht sind die beiden fast nicht zu unterscheiden.
Der einzige offensichtliche Unterschied zwischen den beiden ist, dass, wenn/wenn Sie Vorlagen verwenden, Sie in der Regel eine Menge Code in die Header setzen. In diesem Fall erzwingt das Ändern eines Headers das erneute Kompilieren des gesamten Codes, der diesen Header enthält, was oft sehr viel ist. Mit C-Code und/oder nicht-Vorlage C++ - Code, Sie den Großteil des Codes in eine Quelldatei, so dass Sie nur andere Dateien neu kompilieren müssen, wenn Sie die Schnittstelle auf den Code ändern (die in der Regel die Kopfzeile ändern würde)), aber nur diese Datei muss erneut kompiliert werden, wenn Sie Ihre Änderungen auf die Implementierung beschränken, ohne die Schnittstelle zu ändern.
Siehe [ähnliche Frage] (http://stackoverflow.com/questions/9188101/recompile-after-base-class-change/9188135) in Bezug auf Basisklassen. –