2012-10-14 30 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" 

你就可以分发文件,空间,你仍然需要保留替换空间的文件,并确保文件同步(并向其他人表明这一事实)。

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