如何指定scons存储所有.o(中间)文件的目录?

时间:2017-01-14 15:49:07

标签: file object directory scons

如何指定scons存储所有.o(中间)文件的目录?

我的问题是:设置类似全局标志的方法是什么,这样每个'Object'命令都会在solid目录中生成.o文件,'Program'命令会在其他目录中生成?我不希望有一些变量,所以每个'Object'和'Program'命令都会明确地使用这个变量:它很难看并且耦合了。我只想拥有类似编译钩子的东西。

例如,我有一个testSystem.cpp,在SConstruct中我有:

Program('testSystem.cpp')

然后scons将首先编译testSystem.o文件,并链接到testSystem可执行文件。

我知道我可以明确指出存储二进制文件的位置:

Program('bin/testSystem','testSystem.cpp')

好吧,目标文件仍在当前目录下。我可以这样做:

testSystem_obj=Object('obj/testSystem.o','testSystem.cpp')
Program('bin/testSystem',testSystem_obj)

现在我在./obj下有.o,在./bin下可执行。没问题。

但是,这意味着对于每个文件,我要手动写入2行,1行告诉scons生成./obj下的目标文件,另一行生成./bin下的文件。如果我想重新组织我的整个项目,我将修改所有的SConstruct / SConscript文件。我有一个大项目,不想这样做。

任何提示?如何用scons做到这一点?

1 个答案:

答案 0 :(得分:2)

排序。

SCons支持VariantDir,它允许将源与构建产品分开。

看看:

http://scons.org/doc/production/HTML/scons-user/ch15.html