Ich begann in letzter Zeit in Details des Makefile zu graben. Ich verstehe, dass ': =' unmittelbar und '=' verschoben ist. Ich brauche jedoch einige vereinfachte Szenarien/Beispiele, wann ich eine gegenüber der anderen verwenden muss, um den Unterschied voll zu schätzen.Szenarien für die Verwendung von ': =' vs '=' in Makefile? (Mit Beispielen, wenn möglich)
2
A
Antwort
2
Wenn .foo
und .bar
Dateien hatte genau das gleiche Rezept würden Sie es nicht haben wollen zweimal zu schreiben, rekursiv erweitert Variablen zur Rettung:
foobar = do_stuff [email protected]
%.foo:
$(foobar)
%.bar:
$(foobar)
Sofern Sie rekursive Erweiterung benötigen, einfach erweitert Variablen sollte standardmäßig verwendet werden, da sie einfacher zu verstehen und robuster sind.
some_deps = stuff I really want
some_other_deps = $(some_deps) some more
### [...]
some_deps = unrelated stuff
foo: $(some_other_deps) # Oops, should have used := for some_other_deps
Sie können weitere Beispiele in der manual finden.
+0
Vielen Dank für die Bezugnahme auf diesen Abschnitt des Handbuchs. Ich habe diesen Teil total vermisst. – MIbrah
Verwandte Themen
- 1. Verwendung von LDFLAGS in Makefile
- 2. Szenarien für die Verwendung der abstrakten Klasse und Interface-Klasse
- 3. Verwendung von nmake mit Wildcards im Makefile
- 4. Was sind die Szenarien für die Verwendung von Spiegelung, Protokollversand, Replikation und Clustering in SQL Server
- 5. CQRS - Domain-Ausnahmen vs Ereignisse für außergewöhnliche Szenarien
- 6. Suchen Sie nach Beispielen für die Verwendung von "@ _ *" bei der Mustererkennung in Scala
- 7. Ist die Abhängigkeit von einem Symlink in einem Makefile möglich?
- 8. die Verwendung von Entwicklertools in VS-Code?
- 9. Format Funktion vs Parameter in SQL-Injektion Szenarien?
- 10. Makefile benötigt für die Kompilierung des Opus Codec für Android
- 11. Asio: Verwendung von selbst geteilten Zeiger in den Beispielen
- 12. Modularisierung von Szenarien mit Gatling
- 13. Welche Szenarien gelten für die Verwendung des HTTP-Status 207 in der REST-API?
- 14. Konvertiere ein Makefile in ein VS-Projekt
- 15. Makefile-Variablen von Kommandozeile vs. Umgebung
- 16. Online-Tutorial für ASP.Net MVC mit Beispielen?
- 17. Exact Target-Integration mit Ruby-Beispielen?
- 18. Die besten Sortieralgorithmen für C#/.NET in verschiedenen Szenarien
- 19. Debuggen von JBehave-Szenarien
- 20. aus einer Liste von Beispielen
- 21. Makefile - Machen Sie Abhängigkeit nur, wenn die Datei nicht existiert
- 22. Wann wird Post-Dekrement/Inkrement vs. Vordekrement/Inkrement in realen Beispielen verwendet?
- 23. Beispiele für die Verwendung von Generics in .Net (C#/VB.NET)
- 24. Makefile gesetzt, wenn die Variable leer ist
- 25. Erstellen von Boost-Python-Beispielen mit Visual Studio 2008
- 26. JavaScript Site mit funktionierenden Beispielen
- 27. Problem mit Android SDK-Beispielen
- 28. Wie Makefile mit Fehler bei der Verwendung einer Schleife beenden?
- 29. Makefile, Regel für mehrere Eingaben
- 30. Verwendung von Hredis vs NSDictionary
': =' wird nur einmal ausgewertet, während '=' bei jeder Referenz neu ausgewertet wird. Betrachten Sie dieses Szenario: 'TEMPFILE = $ (shell mktemp/tmp/XXXXXXXX)'. Wenn Sie auf 'TEMPFILE' verweisen, wird es in jeder Referenz anders sein. Wenn das beabsichtigt ist, wird '=' funktionieren. Wenn die Absicht darin besteht, auf die zuvor erzeugte "TEMPFILE" zu verweisen, da der gewünschte Effekt darin besteht, dieselbe Datei während der gesamten Schritte in dem "Makefile" zu verwenden, sollte stattdessen ": =" verwendet werden. – alvits