Я имею дело с проектом, в котором есть много вариантов директорий, созданных с помощью SConscript(variant_dir=)
.
Я хочу заставить scons
прекратить копировать мои .c
файлы в каталоги сборки.
Я знаю, что могу сделать это, если я передам duplicate=0
для каждого из этих вызовов, как описано в: https://scons.org/doc/2.4.1/HTML/scons-user.html#idp1378843980
Но есть ли более простой способ заставить duplicate=0
автоматически вступать в силу для всех вариантов dirs?
Например, в упрощенном примере:
env = Environment()
objects = [env.Object('main.c')]
build_dir = 'build'
objects.extend(env.SConscript(
os.path.join('lib', 'SConscript'),
variant_dir=os.path.join(build_dir, 'lib'),
))
objects.extend(env.SConscript(
os.path.join('lib2', 'SConscript'),
variant_dir=os.path.join(build_dir, 'lib2'),
))
env.Program('main.out', objects)
Я хотел бы сделать что-то вроде:
env = Environment(duplicate=0)
Однако я не хотел бы передавать это какпеременная везде, так как люди, скорее всего, забудут передать ее рано или поздно:
env = Environment()
objects = [env.Object('main.c')]
build_dir = 'build'
duplicate = 0
objects.extend(env.SConscript(
os.path.join('lib', 'SConscript'),
variant_dir=os.path.join(build_dir, 'lib'),
duplicate=duplicate
))
objects.extend(env.SConscript(
os.path.join('lib2', 'SConscript'),
variant_dir=os.path.join(build_dir, 'lib2'),
duplicate=duplicate
))
env.Program('main.out', objects)
Это будет аналогично --duplicate soft-copy
, который влияет на все варианты dir за один раз.
Еслитолько у меня был --duplicate none
, я мог также установить его по умолчанию с SetOption
из моего сценария, и все было бы хорошо.
https://pairlist4.pair.net/pipermail/scons-users/2018-December/007474.html