1

我在不同的目录中使用 scons 我的源代码。我想在 scons 编译目录中的文件时打印目录名称。

我想先打印目录名,然后再打印文件名。

现在正在使用“CCCOMSTR”变量来打印源名称。如下。

    env['CCCOMSTR'] = "= Compiling $SOURCE"

它每次都打印带有目录的源名称。

我想要这样的输出:

构建目录:“目录名”

= 编译“源文件名”

= 编译“源文件名”

构建目录:“目录名”

= 编译“源文件名”

= 编译“源文件名”

谁能告诉我该怎么做。

谢谢

4

1 回答 1

1

我认为它不可能做你所要求的。我想您现在已经注意到 SCons 与 make 不同,因为 Makefile 中的命令在评估时执行,并且在您期望的时候会看到 Makefile 中的回显。SCons 有效地执行了 2 次传递:第一次是将 SCons 脚本中的所有内容读取到内部结构中,然后分析结构并构建需要构建的内容。SCons 脚本中的任何打印都将在读取脚本时显示,而不是在构建目标时显示。

也许更好的方法来做你已经在做的事情是使用 SCons Progress()函数。

正如评论中提到的, Progress() 函数只会在分析时显示目标,而不是在构建时显示目标。但是,如果您向 Progress() 函数提供一个函数,则可以获取每个目录的目录,接收的参数之一是节点,它实际上是目标,您可以获取其目录,如此所述。这是一个例子:

def progress_function(node)
    print 'Node %s: %s' % (node, Dir(node).abspath))

Progress(progress_function)
于 2013-05-17T13:36:22.283 回答