如何指定scons存储所有.o(中间)文件的目录?
我的问题是:如何设置全局标志之类的东西,以便每个“Object”命令将在固定目录中生成 .o 文件,而“Program”命令将在其他目录中生成?我不希望有一些变量,以便每个“对象”和“程序”命令都会显式使用此变量:它很丑陋且耦合。我只是希望有一个类似编译钩子(Hook)的东西。
例如,我有一个 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 做到这一点?
最佳答案
有点。
SCons 支持 VariantDir,它允许将源代码与构建产品分开。
看一下:
关于file - 如何为 scons 指定一个目录来存储所有 .o(中间) 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41651860/