我希望在SCons中运行一个没有任何输入/输出文件的命令(实际上,输入和输出是同一个文件)。目前,我只是使用subprocess.Popen手动运行它,但是否有更适合SCons的方法来执行它?
我希望在SCons中运行一个没有任何输入/输出文件的命令(实际上,输入和输出是同一个文件)。目前,我只是使用subprocess.Popen手动运行它,但是否有更适合SCons的方法来执行它?
您可以使用Command函数来运行通过Popen运行的任何外部命令,并且您可以使用AlwaysBuild函数来确保即使目标文件存在,也始终运行您的命令。由于Scons不喜欢依赖关系环路,请将源列表留空。
myfile = env.Command('myfile.out', [], 'echo Hello world > $TARGETS')
env.AlwaysBuild(myfile)
scons wiki还提供了一个PhonyTargets的方法,它可以方便地设置许多简单的命令。
AlwaysBuild
是一个具有误导性的名称。在实际发出命令之前,scons 仍会评估一些规则。 - Adam Naylor