SCons 从 Action/Command 中删除 space

SCons removes space from Action/Command

使用以下命令:

env.Command('XYZ', 'somefile', 'echo "Hello,    how are   you" > $TARGET')

SCons 压缩 space 并运行:

echo "Hello, how are you" > XYZ

并且:

$ cat XYZ
Hello, how are you

为什么会这样,我可以阻止它吗?

这是一个已知问题,记录在错误 #1123 and #2018 中。

在您只想创建文本文件的情况下,有一个简单的解决方法,它具有跨平台工作的额外好处:使用 Textfile Builder...

env = Environment(tools=['default', 'textfile'])

env.Textfile('XYZ','Hello,    how are   you')

这将创建具有 *.txt 扩展名的目标文件,因为这是生成器的默认设置。如果不喜欢,可以覆盖变量$TEXTFILESUFFIX。在环境中全局,或在本地进行单个构建器调用,如:

env.Textfile('XYZ','Hello,    how are   you', TEXTFILESUFFIX='')