0

我有一个 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 中表达这一点?

4

2 回答 2

1

我有两个解决方法给你。我称它们为解决方法,因为它们没有在 SConscript 中表达依赖关系。

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

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

    
    import sys
    sys.path += ['%s/stuff' % (Dir('#').abspath)]

    import configuration
于 2009-12-17T01:32:38.707 回答
0

首先,你真的需要依赖你的 SCons 脚本源文件吗?他们多久改变一次,如果他们改变了,如果他们使用 SConscript.py 配置文件,要求你的用户进行干净的构建真的很麻烦。

如果您确实需要这个,您目前没有看到这个吗?我发现 SCons 非常擅长了解 SConscript.py 文件是否以及如何更改。具体来说,如果您有任何具有自定义python 函数的用户定义构建器?action对于我的EDA构建流程,它有大量用户定义的 python 函数调用无数的专有 EDA 工具,如果我更改任何 SConstruct.py文件,我的自定义 python 构建器的所有结果都被认为是无效的(必须让我懊恼,经常) . 仅供参考,我正在使用版本 1.2.0.d20090223。

于 2009-12-17T14:08:09.110 回答