我是scons的新手,我设法弄清楚如何将一个(con)脚本生成的二进制文件(可执行文件+对象)重定向到另一个目录。
在我的主项目目录(root)中,我有一个SConstruct
文件,其中包含以下行:
SConscript("source/SConscript", variant_dir="bin")
很明显,它将source/SConscript
脚本的构建(变体)目录设置为bin
。
source/SConscript
:
common = []
env = Environment()
env.Program("test", ["test.cpp"] + common)
env.Program("sdl-test", ["sdl_test.cpp"] + common, LIBS=["SDL2"])
我当前的设置不及想法......
我希望所有目标文件都以object
结尾,将所有源文件保存在source
中,并在bin
目录中构建最终的程序二进制文件。
我如何用scons实现这一目标? (最好不要使用命令式(常规)Python,我希望这是一个内置功能。)
答案 0 :(得分:1)
你可以通过为你将variant_dir设置到不同目录的对象添加另一个SConscript脚本来实现,它看起来像这样:
<强> SConstruct 强>
env = Environment()
SConscript('source/SConscript_obj', variant_dir='object',
duplicate=0, exports='env')
SConscript('source/SConscript', variant_dir='bin',
duplicate=0, exports='env')
<强>源/ SConscript_obj 强>
Import('env')
env.Object("test.cpp")
env.Object("sdl_test.cpp")
<强>源/ SConscript 强>
Import('env')
env.Program("test", ["#/object/test.o"])
env.Program("sdl-test", ["#/object/sdl_test.o"], LIBS=["SDL2"])
或者,在SConscript_obj中,您可以创建一个库,而不仅仅是编译对象。
您还可以考虑在现有的SConscript中添加对VariantDir的调用,但我不确定它的效果如何。