还使用来自SCons构建脚本的SCons编译第三方库

时间:2019-04-27 13:45:34

标签: parallel-processing scons build-system

我正在使用SCons来构建我的项目。

我集成的第三方库也使用SCons,但是可以随时从Git更新它,而且我无法控制其SConstruct文件的内容。

单独编译时,库的SConstruct文件接受参数bits=32/64target=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不能像{{1那样)并行化构建(即scons -j16)。 }}。

1 个答案:

答案 0 :(得分:0)

除了Command()之外,没有什么好方法可以做到这一点。 您可能会问godot项目,他们是否可以将大部分逻辑移到顶层的SConscript中,然后可以将其导入并以某种方式将所需的参数传递给它。