我有一个SCons项目设置如下:
Project/
SConstruct # "SConscript('stuff/SConscript', variant_dir = 'build')
stuff/
SConscript # "import configuration"
configuration/
__init__.py
Thing.py
构建时,SConscript将复制到构建目录,但“配置”模块不会。通常,人们会用Depends()
函数表达文件依赖关系(例如Depends(program, object_files)
)。但是,在这种情况下,SConscript文件本身就是依赖项的“目标”。
我如何在我的SConscript中表达这一点?
答案 0 :(得分:1)
我有两个解决方法。我称它们为变通方法因为它们不表达SConscript中的依赖性。
从SConstruct执行'import configuration'(您需要编辑sys.path)
在stuff / SConscript中,将源目录添加到sys.path:
import sys
sys.path += ['%s/stuff' % (Dir('#').abspath)]
import configuration
答案 1 :(得分:0)
首先,你真的需要依赖你的SCons脚本源文件吗?它们经常发生变化,如果它们发生了变化,那么要求用户使用SConscript.py配置文件进行清理时,要求用户执行干净的构建是非常繁琐的。
如果你确实需要这个,你目前没有看到这个吗?我发现SCons非常擅长知道SConscript.py文件是否以及如何更改。具体来说,如果你有任何user defined builders with custom action
python函数?对于我的EDA构建流程,它有大量用户定义的python函数调用无数的专有EDA工具,如果我更改任何 SConstruct.py
文件,我的所有结果假定自定义python构建器是无效的(通常我的懊恼)。仅供参考,我使用的是版本1.2.0.d20090223。