我正在处理一个用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环境,覆盖所需的功能并将其别名到您的SCons文件中。例如: