gpt4 book ai didi

c++ - scons:对象、源代码、可执行文件,都在单独的目录中

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:02 24 4
gpt4 key购买 nike

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

在我的主项目目录 (root) 中,我有一个 SConstruct 文件,其中包含以下行:

SConscript("source/SConscript", variant_dir="bin")

显然,它将 source/SConscript 脚本的构建(变体)目录设置为 bin

来源/SConscript:

common = []

env = Environment()
env.Program("test", ["test.cpp"] + common)
env.Program("sdl-test", ["sdl_test.cpp"] + common, LIBS=["SDL2"])

我目前的设置不太理想...

我希望所有目标文件都在 object 中,将所有源文件保留在 source 中,并在 中构建最终程序二进制文件code>bin目录。

如何使用 scons 实现这一目标? (最好不要与命令式(常规)Python 混淆,我希望这是一个内置功能。)

最佳答案

您可以通过为要将 variant_dir 设置为不同目录的对象添加另一个 SConscript 脚本来实现,它看起来像这样:

构造

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

关于c++ - scons:对象、源代码、可执行文件,都在单独的目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com