我正在尝试将我的 SConstruct 文件划分为代码块,其中每个块由别名控制,默认情况下不运行任何代码;即只是通过运行scons
。别名当然是从命令行运行的,例如(在下面的示例中):
scons h
这是一些示例代码。这似乎工作正常。然而,三个问题。
有一个更好的方法吗?
更具体地说,我不明白 Alias 调用中的目标参数如何传递给
h
andh3
操作函数。我注意到如果我将它们留空,构建将不起作用。然而,没有明显的方法可以将目标传递给这些函数,因为它们不接受任何参数。相关地,文档说动作函数需要
target
、source
和env
参数。这些动作函数没有这些,但无论如何都可以工作。怎么来的?
代码如下:
#!/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())