Was ist der Unterschied zwischen: = und + = in make-Datei?

9

Was ist der Arbeitsunterschied in den folgenden Aussagen?

%Vor%     
Naina B 19.04.2012, 12:01
quelle

6 Antworten

10
  • : = (Simply Expanded Variable) Der Wert wird ein für alle mal expandiert  Verweise auf andere Variablen und Funktionen, wenn Variable definiert ist. z.B.            x:=foo
    y:=$(x) bar
    x:=later
            so ist oben gleichbedeutend mit
    y:=foo bar
    x:=later

  • + = wird zum Anhängen von mehr Text an Variablen verwendet, z. B.
    objects=main.o foo.o bar.o
    objects+=new.o
     wodurch Objekte auf 'main.o foo.o bar.o new.o' gesetzt werden.

  • = ist für rekursiv erweiterte Variable. Der Wert ist install wörtlich; wenn es enthält  Verweis auf andere Variablen Diese Variablen werden erweitert, wenn diese Variable ist  substituiert. Und dies ist als rekursive Expansion bekannt.

Omji Mishra 09.10.2012 10:17
quelle
5

"=" dient zum Definieren rekursiv expandierter Variablen. Die folgende Make-Datei wird "y is later bar"

ausgeben %Vor%

":=" dient zum Definieren einer einfach expandierten Variablen, die ein für allemal erweitert wird. Die folgende make-Datei wird "y is foo bar"

ausgeben %Vor%

Wie bereits erwähnt, können Sie weitere Details in Verwenden von Variablen Abschnitt des GNU make manual.

Hoffe das hilft: -)

    
Zhile Zou 30.04.2014 02:52
quelle
4

:= Definiert die Variable hier für die linke Seite, += fügt die rechte Seite dem vorhandenen Wert der Variablen hinzu. Vergleichen Sie := mit = , das die rechte Seite am Verwendungsort auswertet (anstatt in dieser bestimmten Zeile)

Sie können sich das Handbuch hier ansehen (vorausgesetzt, Sie verwenden GNU make)

    
quelle
0

Von Diese Website

für die Syntax := Link zum Platzieren auf Seite

  

Einfach expandierte Variablen werden durch Linien mit ': =' definiert (siehe Einstellen von Variablen). Der Wert einer einfach expandierten Variablen wird ein für allemal abgetastet, wobei alle Referenzen auf andere Variablen und Funktionen erweitert werden, wenn die Variable definiert ist. Der tatsächliche Wert der einfach erweiterten Variablen ist das Ergebnis der Erweiterung des von Ihnen geschriebenen Texts. Es enthält keine Verweise auf andere Variablen. Es enthält ihre Werte ab dem Zeitpunkt, zu dem diese Variable definiert wurde.

für die Syntax += Link zum Platzieren auf Seite

  

Wenn die betreffende Variable zuvor nicht definiert wurde, verhält sich '+ =' wie normal '=': Sie definiert eine rekursiv expandierte Variable. Wenn es jedoch eine vorherige Definition gibt, hängt es genau davon ab, welche Art von Variablen Sie ursprünglich definiert haben. Eine Erläuterung der zwei Varianten von Variablen finden Sie unter Die zwei Varianten von Variablen.

    
Serdalis 19.04.2012 12:06
quelle
0

Der := wird den Wert einmal auf die Variable setzen, dh er wird nicht jedes Mal neu bewertet, wenn er auf diese Variable trifft. Kann beim Kompilieren des Codes einen großen Unterschied in der Leistung machen.

+= addiert einfach einen Wert zur Variablen.

    
fduff 19.04.2012 12:07
quelle
-3

Die := ist für die Zuweisung in der gleichen Weise wie = .

+= fügt der Variablen einen neuen Wert hinzu.

    
Geoffroy 19.04.2012 12:04
quelle

Tags und Links