2012-10-14 32 views
4

如何告訴automake使用名稱中帶有空格的文件?這似乎並不奏效。使用自動工具處理文件名中的空格

bin_PROGRAMS = prog 
prog_SOURCES = "a file.c" "another file.c" 
+1

只是一個建議:甚至不嘗試。有可能有辦法做到這一點,但不是。這不值得。堅持與他們的所有編碼的東西沒有空格的文件。 – Mat

+2

@Mat我沒有問我是否應該。我問如何。 –

+0

我知道。這就是爲什麼我沒有發佈答案。 – Mat

回答

5

你不能。 (奇怪的是,這是Automake的唯一極其嚴重的錯誤在我看來,但人們很少抱怨。)

我曾經圍繞在其名稱中的空間中安裝數據文件,由重命名文件源樹,以便它們沒有空格,然後將它們重命名爲install-data-hook中的空格名稱。 (link

然而,這與你的問題沒有關係,我的答案仍然是:你不能。據我所知,prog_SOURCES只是一個shell變量。一個特別命名的,當然,但一旦Automake發現它,它只是分隔它的空間。空格是空格,無論它們是被轉義,引用還是純文本。他們應該設計它,以便您可以逃離空間,但我相信他們現在不會改變它,因爲它會導致廣泛的Automake破壞。

+0

人們不會抱怨,因爲這不是一個嚴重的錯誤。遊戲中唯一嚴重的錯誤是允許文件名空白的文件系統。 –

+0

所以automake完全壞了。 新行怎麼樣?

+0

'make'不支持文件名中的空格。如果這是一個問題,不要使用任何基於'make'的東西。 BTW'prog_SOURCES'不是一個shell變量,它是一個Makefile變量(或者POSIX術語中的「Makefile宏」)。 – adl

0

一種方式圍繞它,雖然很笨重,是存儲文件的兩個副本在你的源

another file.ext 
another_file.ext 

然後使用

EXTRA_DIST = another_file.ext 

dist-hook: 
    cp $(distdir)/another_file.ext "$(distdir)/another file.ext" 

你就可以分發文件,空間,你仍然需要保留替換空間的文件,並確保文件同步(並向其他人表明這一事實)。

在大多數情況下,只需重命名不含空格的文件就會更方便,除非您遇到需要間隔文件的非常奇怪的情況。