【问题标题】:Run a command in SCons without dependencies在没有依赖关系的 SCons 中运行命令
【发布时间】:2011-08-17 13:08:52
【问题描述】:

我想在 SCons 中运行一个没有任何输入/输出文件的命令(实际上输入和输出是同一个文件)。目前我只是用 subprocess.Popen 手动运行它,但是有没有更 SConsy 的方法呢?

【问题讨论】:

    标签: scons


    【解决方案1】:

    您可以使用Command 函数运行您通过 Popen 运行的任何外部命令,并且您可以使用AlwaysBuild 函数确保即使目标文件存在,您的命令也始终运行。 Scons 不喜欢依赖循环,所以将源列表留空。

    myfile = env.Command('myfile.out', [], 'echo Hello world > $TARGETS')
    env.AlwaysBuild(myfile)
    

    scons wiki 还有一个PhonyTargets 的配方,可以轻松设置许多简单的命令。

    【讨论】:

    • 如果已经有构建“myfile.out”的规则,那么它会抱怨有多种构建目标的方法。我想要一个规则来创建文件,另一个来修改它。
    • 我认为为一个目标制定两条规则是个坏主意。如果目标存在,scons 如何知道是否调用了“修改”规则?如果您有两个目标,每个规则一个目标,它会更好地工作。或者有一个同时执行“创建”和“修改”操作的规则。
    • 注意 scons 文档,其中指出 AlwaysBuild 是一个误导性名称。在实际发出命令之前,scons 仍然会评估一些规则。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多