SCons 如何硬链接变体目录中的源代码?

How SCons hardlinks sources in variant directory?

我测试了 SCons 默认的 hardlink 行为。

我期待变体目录中硬linked 文件的修改也反映在原始文件中。但这并没有发生。

硬link真的是 SCons 文档中所述的默认行为,还是只是复制变体目录中的文件?

编辑:

关于我的 implementations/configurations 的详细信息:

我在项目的根目录中使用带有一个 SConscript 的 VariantDir

VariantDir 中的重复选项已打开

cmd 行中没有重复选项(默认)。

我正在使用自己的自定义工具。我仅使用 SCons 中默认可用的构建器中的程序构建器。

我尝试了以下标志:hard-soft-copy(默认)、soft-hard-copy、hard-copy、soft-copy 或 copy。

None 他们会给我一个真正的硬 link 副本。

我期望如下:

当我更改变体目录中的源文件时,更改将反映在原始文件中(在原始位置),因为变体目录中的文件是硬 link。

相反,变体目录中源文件的更改不会反映在原始文件中。

编辑 2:

在 运行 --debug=duplicate 之后,对于依赖周期中考虑的每个文件,我都得到了一条类似于以下的消息:

dup: relinking variant 'relative_path_to_file' from 'absolute_path'

如相应 Python reference docs 中所述,SCons 试图在内部查找和使用以创建硬链接的底层 os.link 方法在 Windows 下不可用。 os.symlink(symbolic/soft 链接)也是如此,因此 Windows 下的 SCons 唯一剩下的选择是实际复制文件。