【发布时间】:2015-11-10 22:42:41
【问题描述】:
我有大约 10,000 个源文件,它们分散在多个文件夹中。
我想知道是否有办法跳过某些文件夹,我知道没有改变。
例如,考虑以下文件夹结构
A (Sconstruct is here)
|
->B (unchanged 1000 files)
->C (unchanged 1000 files)
->D (changed 1 file)
一旦我第一次进行完整构建,我希望它编译所有内容(B、C、D)但是当我修改 D 中的文件时(我知道),我想构建文件夹 仅 D,跳过 B 和 C,最后将它们链接在一起形成最终的二进制文件(B、C 和新 D)。
我一直在寻找很长一段时间,但无法弄清楚。甚至可能吗?我可以指定只查看特定文件夹以进行更改吗?
【问题讨论】:
-
您刚刚描述了 scons 的确切功能。如果您运行“scons”,随后更改了一个文件,然后再次运行“scons”,scons 只会重新编译该文件而不会重新编译其他文件。这是你看到的吗?
-
正确,但它也会遍历目录 B 和 C 并查找修改过的文件。作为用户,我知道他们没有改变,所以我如何让 scons 完全跳过这些文件夹。
-
所以你的抱怨不是 scons 在 B 和 C 中构建,而是 scons 测试 B 和 C 中的依赖关系。我理解正确吗?
-
除了跳过依赖项(我使用 --implicit-deps-unchanged 禁用),我还想完全禁用遍历 B 和 C (这需要大量时间才能发现什么改变)。最后,我想将 B、C 和 new D 一起链接到可执行文件。
-
我有一个问题:如果您在第一次运行时从头开始构建所有内容,然后随后全部由您自己构建,则始终知道您必须根据最新的源代码更改准确地重建哪些库/目标...您需要构建系统做什么?为什么不使用简单的脚本?