如何防止scons清除父目录和兄弟目录?

时间:2013-10-24 17:59:02

标签: scons

我正在使用scons为一个有点大的软件项目实现构建系统。有一个目录结构将各个库和程序的代码分隔到它们自己的目录中。使用我们现有的make系统,我可以在一个程序目录中执行“make clean”,它只会清理与该目录中的源相关联的文件。如果我做一个“scons -c”,它会认识到该程序依赖于兄弟(或堂兄)目录中的大量库,并清除那些文件的所有文件。这不是我想要的,因为我必须重建所有这些可能需要几分钟的库。

我尝试过使用“NoClean()”命令,但没有按照我需要的方式使用它。鉴于代码库的大小和目录结构的复杂性,我实际上不能为每个库中的每个文件都有一个NoClean()行。

有没有办法告诉scons在执行clean(即scons -c)时忽略当前目录上的任何依赖项?

2 个答案:

答案 0 :(得分:1)

清洁时尝试使用目标名称。

scons -c aTargetName

您可以使用SCons Alias()函数简化目标名称,并将多个目标名称分组为一个别名。

使用这种方法,你必须在每个适当的子目录中添加一个别名,这不一定是坏事:)

答案 1 :(得分:1)

我希望自己有一个好的答案。

我现在能提供的唯一解决方案就是让Noclean工作。 所以在你的图书馆,你应该有这样的东西

lib_objs = SharedObject(source_list)
mylib = SharedLibrary('libname', lib_objs)

因此,我们希望保护库和源不被清除。

NoClean([mylib, lib_objs])

请注意,我必须从库中拆分目标文件的构建,因为我希望能够将它们传递给NoClean。