Ich habe folgendes Makefile:
%Vor%Die Idee ist, dass ich versuche, zwei verschiedene .cc / .h-Dateien zu verknüpfen, je nachdem, welche Implementierung ich verwenden möchte. Wenn ich real_clean mache, existiert keine der .cc / .h Dateien, ich habe nur eine driver.cc Datei und das Makefile im Ordner. Wenn ich make anrufe, heißt es, sie sind auf dem neuesten Stand. Das passiert sogar, wenn ich die Dateien in adjl / adm editiere, um sie zu "neueren" Versionen zu machen.
%Vor%Ich habe das Template-Makefile von einem anderen Projekt genommen, das ich gemacht habe, und sie sind auf die gleiche Weise geschrieben, aber ich kann wiederholt die gleichen Befehle ohne "aktuelle" Probleme machen.
Ich habe gegoogelt, aber habe kein Problem gefunden, das meinen ähnlich ist (sie scheinen im Allgemeinen Benutzer einzubeziehen, die nicht putzen, bevor sie machen).
Danke an alle zum Lesen.
Die Ziele adjl
und adjm
sind echte Ziele. Da sie keine Abhängigkeiten haben und die Dateien vorhanden sind (die 2 Verzeichnisse in Ihrem Eintrag), macht make nichts (weil sie in der Nähe sind).
Sie möchten jedoch adjl
und adjm
als falsche Ziele angeben (damit die Befehle ausgeführt werden, wenn Sie sie angeben). Um dies zu tun,
Lesen Sie Ссылка , um weitere Informationen zu erhalten.
BEARBEITEN
Tatsächlich sollten die Regeln real_clean
und clean
wahrscheinlich auch falsch gemacht werden.
Sie haben Verzeichnisse mit dem gleichen Namen wie Ihre Ziele.
Da Ihre Ziele von nichts abhängen, werden sie immer als aktuell angesehen.
Wenn Sie ein Ziel angeben, das nicht mit einer Datei auf der Festplatte verknüpft ist, müssen Sie das spezielle Ziel .PHONY
:
Sie sollten das Gleiche auch für Ihre clean und real_clean Ziele tun - sonst brechen sie, wenn jemand eine Datei namens "clean" erstellt.