Могу ли я использовать псевдонимы SCons для выбора SConscripts для запуска?

Я использую SCons для создания очень большого проекта со множеством сборочных подпроектов. Я могу легко использовать ключевые команды, такие как scons group=ai для создания подпроектов AI с помощью операторов if (выбирая правильные SConscripts на основе команды ключевого слова), но я хочу, чтобы другие могли как можно проще использовать scons. В идеале я хотел бы использовать это так: scons ai построить компоненты AI. Тем не менее, единственная функциональность с одним словом, которую я нашел в SCons, это псевдонимы, и все примеры касаются изменения цели. Это не то, что я хочу. Поскольку у меня есть очень большой проект с несколькими вложенными файлами SConscript для создания подпроектов, я хочу вызывать SConscripts избирательно. Я пробовал код так:

env.Alias("ai", SConscript("ai/SConscript", 'env'))

но это вызывает AI SConscript каждый раз, независимо от того, использую ли я псевдоним «ai» или другой. Кто-нибудь знает, возможно ли использовать псевдонимы таким образом, чтобы выборочно вызывать SConscripts на основе псевдонима?

0

Решение

Как вы упомянули, Alias() Функция используется только для целей. Я могу придумать 2 способа решить эту проблему

Псевдоним () может вызываться несколько раз для одного и того же псевдонима с разными целями, поэтому вы можете вызывать его для всех целей в каждом SConscript, затем вы можете построить все в SConscript. Вот пример того, что я имею в виду:

AI / SConscript:

# targets, etc

env.Alias("ai", target1)
env.Alias("ai", target2)
...
env.Alias("ai", targetn)

Другой вариант — поместить некоторую логику в корневой SConstruct, чтобы он вызывал только подпроект SConscript, основанный на аргументе командной строки. Эта опция потребует от вас использовать аргумент командной строки этой формы: group=ai

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]