1

我需要附加到 SCons 构建,以便在其中发生的事情时得到通知:文件编译、文件链接等。

我知道通过 -listener 选项进行 ANT 构建也是可能的。你能告诉如何为 SCons 构建做这件事吗?

4

1 回答 1

2

在 SCons 中构建目标时,您可以通过此处记录的 AddPostAction(target, action) 函数关联发布操作。

这是一个带有 python 函数操作的简单示例:

# Create yourAction here:
#   can be a python function or external (shell) command line

def helloWorldAction(target = None, source = None, env = None):
    '''
      target: a Node object representing the target file
      source: a Node object representing the source file
      env: the construction environment used for building the target file
      The target and source arguments may be lists of Node objects if there 
      is more than one target file or source file.
    '''

    print "PostAction for target: %s" % str(target)

    # you can get a map of the source files like this:
    # source_file_names = map(lambda x: str(x), source)
    # compilation options, etc can be retrieved from the env

    return 0

env = Environment()
progTarget = env.Program(target = "helloWorld", source = "helloWorld.cc")
env.AddPostAction(progTarget, helloWorldAction)
# Or create the action object like this:
# a = Action(helloWorldAction)

然后,每次构建 helloWorld 后,helloWorldAction都会执行 python 函数。

关于在不修改给定 SConstruct 的情况下执行此操作,我看不出这怎么可能。

于 2012-09-05T13:31:45.767 回答