file - 如何为 scons 指定一个目录来存储所有 .o(中间) 文件?

标签 file object directory scons

如何指定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,它允许将源代码与构建产品分开。

看一下:

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

关于file - 如何为 scons 指定一个目录来存储所有 .o(中间) 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41651860/

相关文章:

linux - 目录被过早删除

c# - 无法创建 Aux 文件夹

swift - 将 Swift 中的 NSFileManager 文件路径转换为 ​​NSURL

python - 从一个文件读取数据丢失,处理并写入另一个文件? Python

javascript 添加或合并到对象

java - 继承和创建对象

javascript - 如何将对象添加到数组中但仅当数组的当前元素为 0 时?

c# - 文件路径中的空格

c++ - 将文件读入结构体数组

linux - Linux 上最适合用户私有(private)文件夹的文件夹分布是什么?