表达一个SConscript的自身依赖关系
我有一个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中表达这个呢?
2 个回答
0
首先,你真的需要依赖你的 SCons 脚本源文件吗?这些文件多久会改变一次?如果它们改变了,用户真的需要每次都进行一次干净的构建吗,特别是当他们修改了 SConscript.py 配置文件的时候。
如果你确实需要这样做,你现在有没有遇到这个问题?我发现 SCons 在判断 SConscript.py 文件是否以及如何改变方面做得相当不错。特别是,如果你有任何用户定义的构建器和自定义的 action
Python 函数的话?对于我的电子设计自动化构建流程来说,有很多用户定义的 Python 函数调用各种专有的 EDA 工具。如果我改变了任何 SConstruct.py
文件,我所有自定义 Python 构建器的结果都会被认为是无效的(这让我很沮丧,常常如此)。顺便说一下,我使用的是 1.2.0.d20090223 版本。
1
我有两个解决办法给你。我称它们为解决办法,因为它们没有在SConscript中明确表达依赖关系。
从你的SConstruct文件中进行“导入配置”(你需要编辑sys.path)
在stuff/SConscript中,将源代码目录添加到sys.path:
import sys
sys.path += ['%s/stuff' % (Dir('#').abspath)]
import configuration