如何在scons中打印编译目录路径

时间:2013-05-17 12:45:49

标签: python-2.7 scons

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

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

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

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

每次都用目录打印源名称。

我希望输出如下:

建筑目录:“目录名称”

=编译“源文件名”

=编译“源文件名”

建筑目录:“目录名称”

=编译“源文件名”

=编译“源文件名”

任何人都可以告诉我该怎么做。

由于

1 个答案:

答案 0 :(得分:1)

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

使用SCons Progress()函数或许更好的方法来做你正在做的事情。

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

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

Progress(progress_function)