Makefile gesetzt, wenn die Variable leer ist

8

Ich möchte eine Variable setzen, wenn sie leer ist. Ich habe es auf diese Weise versucht:

%Vor%

Der erste $(something) kann eine leere Zeichenfolge zurückgeben, die bedingte Zuweisung? = funktioniert jedoch nur, wenn die vorherige Variable nicht gesetzt ist, nicht wenn sie leer ist.

Irgendeine elegante Lösung, um die Variable zu setzen, wenn sie leer ist?

BEARBEITEN Ich habe diese Lösung gefunden:

%Vor%

aber ich denke, dass es noch eine elegantere geben wird.

    
RicoRico 06.08.2016, 07:40
quelle

2 Antworten

30
  

Irgendeine elegante Lösung, um die Variable zu setzen, wenn sie leer ist?

GNU make ist kaum für elegante Lösungen bekannt. Es sei denn, Sie finden Falltüren und Minenfelder elegant. Ich kenne nur die zwei Möglichkeiten, um zu erreichen, was Sie wollen:

  1. Die Standardlösung ifeq / endif :

    %Vor%
  2. Verwenden Sie die Funktion $(if) :

    %Vor%

    Man kann versuchen, dieses Konstrukt in eine Funktion zu packen, aber das ist nicht ratsam. Die Funktion hätte den versteckten Nachteil, dass sie $(something else) gelegentlich bricht, wenn sie , enthält (für die es nur unberechenbare Workarounds gibt). (Die integrierten Funktionen wie $(if) sind gegen den Fehler , immun.)

Elegance Test liegt bei Ihnen.

    
Dummy00001 08.08.2016, 15:06
quelle
0

Aus GNU make , Kapitel 7.2, Syntax der Bedingungen:

"Oft möchten Sie testen, ob eine Variable einen nicht leeren Wert hat. Wenn der Wert aus komplexen Erweiterungen von Variablen und Funktionen resultiert, enthalten Erweiterungen, die Sie als leer betrachten, möglicherweise Leerzeichen und werden daher nicht als leer angesehen , Sie können die Funktion strip verwenden, um die Interpretation von Leerzeichen als nicht leeren Wert zu vermeiden . Beispiel:

%Vor%

wertet text-if-empty aus, auch wenn die Erweiterung von $ (foo) Leerzeichen enthält. "

    
Danijel 15.02.2018 08:03
quelle

Tags und Links