使用Python模块在Scons中

2024-04-26 07:41:09 发布

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

我尝试在构建环境中使用to scons,目录结构类似于:

main_dir
main_dir/dir_A
main_dir/dir_B
main_dir/dir_C
main_dir/dirB/dir_b1
main_dir/dirB/dir_b2
main_dir/dirB/dir_b3

主目录中有SConstruct文件,后续目录中有相应的SConscript。 在dir_b1、dir_b2和dir_b3中,大部分build env设置都是常见的,因此我尝试导入一个公共python模块来完成所有这些工作,而这正是一个两难的问题。 比如说dir_b1,目前我做的是:

^{pr2}$

我想把所有这些常见的东西移到python模块中,并在dir-to-SConscript文件中保留特定的内容。在

我应该如何管理环境变量?在

如果我也在python模块中克隆env变量,并在模块和SConscript中都设置值,那么在进行构建时scons会对这两个变量进行更改吗?在


Tags: 模块文件to目录env环境maindir
1条回答
网友
1楼 · 发布于 2024-04-26 07:41:09

SConstructs/SConscripts中scon的构建描述在第一个“parse”阶段读取。在这一阶段,SCons收集关于要构建哪些节点以及使用哪些环境的所有信息。 环境的行为非常类似于字典(=map),在这个意义上,它支持通过每个键设置特定的值。对于上面示例中的“my_env”这样的单个环境,具体发生在哪里并不重要。对于最后“构建”阶段中的操作,对环境的分配与它们是发生在顶层scostruct中还是发生在深埋子目录中的某个SConscript无关。如果分配给同一个键,则最后一个赋值获胜。 只有当“解析”阶段完成时,实际的“构建”才开始。在

最后,也是最重要的一点,“构建”并不遵循您在SConstructs/SConscripts中给出的定义顺序,而是遵循您定义的目标文件和源文件之间的依赖关系。在

因此,您应该能够在顶层SConstruct中设置公共变量,然后将此环境传递给SConscripts,在那里您可以Clone它们,并在需要时为这个cloned环境添加/更改其他值。在

相关问题 更多 >