我正在使用SCons来构建我的项目。
我集成的第三方库也使用SCons,但它可以随时从Git更新,我无法控制其SConstruct
文件的内容。
当自己编译时,库的SConstruct
文件接受参数bits=32/64
和target=debug/release
我尝试使用env.SConscript()
构建它,但是这不会以目标SConstruct
文件接受的形式传递参数(不使用SCons的Import()
函数):
# Compile Godot-CPP, a wrapper library we depend on
if nuclex._is_debug_build(environment):
compile_godot_cpp = environment.SConscript(
'addons/godot-cpp/SConstruct', export='bits=64 target=debug'
)
else:
compile_godot_cpp = environment.SConscript(
'addons/godot-cpp/SConstruct', export='bits=64 target=release'
)
我可以编译另一个SConstruct
文件并将参数传递给它,好像SCons已经从命令行自己调用了吗?
我知道我可以使用env.Command()
来启动另一个SCons进程,但是然后SCons无法像scons -j16
那样并行化构建(即env.SConscript()
)。
在Command()之外没有一个好方法可以做到这一点。你可能会问godot项目是否可以将他们的大部分逻辑移动到顶层的SConscript中,然后你可以导入它并以某种方式将所需的参数传递给。