从Python脚本调用scons

2024-06-08 22:31:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉scons和Python。 我想知道是否有一种方法可以从python脚本中调用scon。在

我的python脚本从用户那里接受要一起编译的代码所在的目录列表(除了做一些其他不重要的事情)。 它还生成一个字符串,用作创建的可执行文件的名称 斯科恩斯。在

我想将这个信息从python脚本传递到scons,然后调用scons。 有简单的方法吗?在

我可以想到以下几种可能性:

  • 使用subprocess.call("scons"...)我不确定scons是否接受我需要作为命令行参数传递的所有信息
  • 将python脚本写入文件。让SConscript解析文件并获取传递的信息。在

Tags: 文件方法字符串代码用户目录脚本名称
3条回答

我使用subprocess.call()python函数来封装我正在处理的特定项目所需的一些长而复杂的命令行参数。有人认为调用应该更简单,这样就不需要封装它,但这是另一个主题:)

要考虑的一个选项是使用SCONSFLAGS环境变量,而不是使用命令行参数here。就我个人而言,我不喜欢使用这个选项。在

您需要的所有选项都可以作为命令行选项传入。定制和处理SCons命令行参数的一个好方法是使用SConsAddOption()函数。另外,您可以通过使用SConsARGUMENTS dictionary获得简单的variable=value变量。其他相关的SCons命令行函数是GetOption()SetOption()。在

关于为可执行文件名传递字符串:SCons可能不喜欢这样。至少,考虑用一个特定的可执行字符串执行脚本一次,然后用另一个可执行字符串执行第二次,然后要清理,如果scon不是用相同的可执行名称执行的,那么可能会留下可执行文件。在

我想理论上是有可能的。scons可执行文件本身只是一个python脚本,它所做的只是在修改sys.path变量之后执行SCons.Script.main()。但你可能要开始深入挖掘来源,真正理解如何让它做你想做的事情。在

一个更简洁的解决方案是从SConscript文件调用脚本,这可能是预期的用法,应该会更容易。在

谢谢你的回答。最后我用了这个方法:

python脚本将选项列表写入一个文本文件,关闭它,并使用子进程调用调用scons -f MySConscript_file。SConstruct将值从文本文件读取到列表中,并使用它们。在

相关问题 更多 >