Выражение собственных зависимостей SConscript - PullRequest
0 голосов
/ 16 декабря 2009

У меня есть проект 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 ]

1 голос
/ 17 декабря 2009

У меня есть два обходных пути для вас. Я называю их обходными путями, потому что они не выражают зависимость в SConscript.

  1. Выполните «импорт конфигурации» из вашей SConstruct (вам нужно отредактировать sys.path)

  2. В stuff / SConscript добавьте исходный каталог в sys.path:

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

    import configuration
0 голосов
/ 17 декабря 2009

Во-первых, вам действительно нужна зависимость от исходных файлов скрипта SCons? Как часто они меняются, и если они меняются, то действительно ли обременительно требовать, чтобы ваш пользователь делал чистую сборку, если он гадил с конфигурационными файлами SConscript.py.

Если вам требуется это, вы в настоящее время не видите этого? Я обнаружил, что SCons довольно хорошо знает, изменились ли и как файлы SConscript.py. В частности, если у вас есть определяемые пользователем компоновщики с пользовательскими action функциями python? Для моего EDA потока сборки, который содержит множество пользовательских функций Python, которые вызывают множество проприетарных инструментов EDA, если я изменю любой SConstruct.py файл, все результаты моего пользовательского предполагается, что сборщики Python недействительны (часто к моему огорчению). К вашему сведению, я использую версию 1.2.0.d20090223.

...