2016-03-29 18 views
1

我試圖自動化處理有時包含GNU Make的「等號」的文件。例如,假設文件名稱爲hello=world.txtMakefile如下:如何在GNU Make中處理等號的文件名?

default: hello=world.txt.gz 

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

您會收到以下錯誤:

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

你怎麼能逃脫等號?我嘗試了反斜槓,雙引號和單引號。有任何想法嗎?

回答

2

這是一個解決辦法:

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

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

這對我很好。謝謝。 – swdev

0

用%= Makefile中的特殊字符必須%進行轉義

+0

嗚嗚..我試圖替換所有 「=」 與 「%=」 在makefile 。沒有改變錯誤信息。 – swdev

+0

好的,在我的電腦上工作(我用的是porteus(slackware linux發行版))。 –

+0

我使用的是RedHat的一部分'GNU Make 3.82'。在NEWS文件中似乎有一個警告,該版本在先決條件中無法避免等號。所以,你可能是對的。 – swdev