1

我是 scons 的新手,我设法弄清楚如何将一个(con)脚本生成的二进制文件(可执行文件+对象)重定向到另一个目录。

在我的主项目目录(根目录)中,我有一个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,我希望这是一个内置功能。)

4

1 回答 1

2

您可以通过为对象添加另一个 SConscript 脚本来完成此操作,您将在其中将 variant_dir 设置为不同的目录,它看起来像这样:

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 的调用,但我不确定它的效果如何。

于 2013-10-22T05:22:02.107 回答