2016-03-29 17 views
1

Ich versuche die Verarbeitung von Dateien zu automatisieren, die manchmal ein "Gleichheitszeichen" mit GNU Make enthalten.Wie behandelt man Dateinamen mit Gleichheitszeichen in GNU Make?

default: hello=world.txt.gz 

hello=world.txt.gz : hello=world.txt 
     gzip hello=world.txt 
     echo done 

Sie die folgende Fehlermeldung erhalten:

test.make:5: *** commands commence before first target. Stop. 

Wie kann man die gleichen Zeichen entkommen Zum Beispiel, sagen wird der Dateiname hello=world.txt und die Makefile ist die folgende genannt? Ich habe Backslashes, doppelte Anführungszeichen und einfache Anführungsstriche versucht. Irgendwelche Ideen?

Antwort

2

Dies ist eine Lösung:

equal := = 
default: hello$(equal)world.txt.gz 

hello$(equal)world.txt.gz : hello$(equal)world.txt 
    gzip hello$(equal)world.txt 
    echo done 
+0

Das funktioniert gut für mich. Vielen Dank. – swdev

0

Use% = in Makefiles Sonderzeichen müssen durch% entwertet werden

+0

Hum .. Ich habe versucht, alle "=" mit "% =" ersetzt in der Make-Datei . hat die Fehlermeldung nicht geändert. – swdev

+0

okay, in meinem Computer funktioniert (ich verwende Porteus (Slackware Linux Distribution)). –

+0

Ich benutze 'GNU Make 3.82', das Teil von RedHat ist. Es scheint eine Warnung in der NEWS-Datei über diese Version zu geben, die keine Gleichheitszeichen in den Voraussetzungen entziehen kann. Also, Sie könnten Recht haben. – swdev