代码之家  ›  专栏  ›  技术社区  ›  Andres Jaan Tack

表示sconscript自己的依赖项

  •  0
  • Andres Jaan Tack  · 技术社区  · 15 年前

    我有一个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 回复  |  直到 15 年前
        1
  •  1
  •   Dave Bacher    15 年前

    我有两个解决办法。我称它们为解决方法,因为它们不表示sconscript中的依赖关系。

    1. 从sconstruct执行“导入配置”(需要编辑sys.path)

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

        
        import sys
        sys.path += ['%s/stuff' % (Dir('#').abspath)]
    
        import configuration
    
        2
  •  0
  •   Ross Rogers    15 年前

    首先,您真的需要依赖于您的scons脚本源文件吗?它们更改的频率有多高,如果它们更改了,那么要求用户在处理sconscript.py配置文件时执行干净的构建是非常困难的。

    如果您确实需要,您当前是否没有看到?我发现scons非常擅长了解sconscript.py文件是否发生了变化以及如何发生了变化。具体来说,如果你有 user defined builders with custom action python函数?为了我 EDA 构建具有用户定义的python函数scads的流,如果我更改,这些函数将调用无数专有的EDA工具。 任何 SConstruct.py 文件,我的定制python构建器的所有结果都被认为是无效的(经常让我懊恼)。仅供参考,我使用的是1.2.0.d20090223版本。