表达SConscript自己的依赖关系

时间:2009-12-16 17:27:43

标签: python import module scons

我有一个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 :(得分:1)

我有两个解决方法。我称它们为变通方法因为它们不表达SConscript中的依赖性。

  1. 从SConstruct执行'import configuration'(您需要编辑sys.path)

  2. 在stuff / SConscript中,将源目录添加到sys.path:

  3.     
        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。