gpt4 book ai didi

python - 将 SConstruct 代码划分为一组别名;默认情况下不调用任何代码

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:11 24 4
gpt4 key购买 nike

我试图将我的 SConstruct 文件分成代码块,其中每个 block 由别名控制,默认不运行任何代码;即只需运行scons。别名当然是从命令行运行的,例如(在下面的示例中):

scons h

这是一些示例代码。这看起来工作正常。但是,三个问题。

  1. 有更好的方法吗?

  2. 更具体地说,我不明白 Alias 中的目标参数如何调用传递给 hh3 操作函数。我注意到如果我将它们留空构建不起作用。然而,没有明显的方法可以实现目标这些函数,因为它们不带任何参数。

  3. 相关地,文档说操作函数需要 targetsource、和 env 参数。这些 Action 函数没有这些,但仍然可以工作。怎么会这样?

代码如下:

#!/usr/bin/python                                                                                                                                         

Default(None)

def h(env):
x = env.Program("hello1", "hello1.c")
y = env.Program("hello2", "hello2.c")
return 0

def h3(env):
y = env.Program("hello3", "hello3.c")
return 0

env = Environment()
env.AddMethod(h, "HELLO")
env.AddMethod(h3, "HELLO3")
env.Alias("h", ["hello1", "hello2"], env.HELLO())
env.Alias("h3", ["hello3"],env.HELLO3())

最佳答案

回答你的第一个问题:是的,有更好的方法。

env = Environment()

# h:
x = env.Program("hello1", "hello1.c")
y = env.Program("hello2", "hello2.c")
env.Alias("h", [x,y])
# equivalently: env.alias("h", ["hello1", "hello2"])

# h3
y = env.Program("hello3", "hello3.c")
env.Alias("h3", y)

Default(None)

或者,如果您喜欢将 Program() 调用分组到子例程中,也可以。您只是不需要 AddMethod() 来完成您正在做的事情:

env = Environment()

def h(env):
x = env.Program("hello1", "hello1.c")
y = env.Program("hello2", "hello2.c")
return x,y

def h3(env):
return env.Program("hello3", "hello3.c")

env.Alias("h", h(env))
env.Alias("h3", h3(env))
Default(None)

关于python - 将 SConstruct 代码划分为一组别名;默认情况下不调用任何代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com