如何为所有SCons构建变量设置重复项= 0,而无需在每个SConscript调用上多次重复该选项?

问题描述 投票:3回答:1

我正在处理一个用SConscript(variant_dir=)创建的具有许多变体形式的项目。

我想使scons停止软链接/硬链接/将我的.c文件复制到构建目录中。

我知道,如果我为每个呼叫传递duplicate=0都可以做到这一点,如在https://scons.org/doc/2.4.1/HTML/scons-user.html#idp1378843980中记录的那样>

但是有一种更简单的方法可以使duplicate=0自动对所有变体目录生效吗?

例如,在一个简化的示例中:

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,它将一口气影响所有变体目录。

如果只有我有一个--duplicate none,我也可以通过脚本中的SetOption默认设置它,就可以了。

https://pairlist4.pair.net/pipermail/scons-users/2018-December/007474.html

我正在处理一个项目,该项目具有许多使用SConscript(variant_dir =)创建的变体目录。我想让scons停止软链接/硬链接/将我的.c文件复制到构建目录中。我...

scons
1个回答
0
投票

您可以使您自己的环境继承自SCons环境,覆盖所需的功能并将其别名到您的SCons文件中。例如:

© www.soinside.com 2019 - 2024. All rights reserved.