如何指定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做到这一点?
答案 0 :(得分:2)