我正在尝试编写一个 CTest 测试,将输出目录与另一个已知正确的目录(黄金)进行比较。
我使用了工具
cmake -E compare_files <file1> <file2>
,它应该也适用于我在网上收集的少量目录。
add_test("cmp_to_golden_${test_name}" "${CMAKE_COMMAND}" -E compare_files
"${output_path}"
"${golden_path}"
)
我在网上没有找到任何有用的东西,并且命令本身不打印任何内容,所以我不知道为什么它返回 1 (意味着它认为它们是不同的)。我确信这些目录与我将输出复制粘贴到黄金目录中的目录相同,但它仍然不起作用。仅当我将相同的路径作为两个参数时它才有效。
我错过了什么?我可能认为该工具确实不是为目录而设计的,但我想对此进行一些确认。
它不应该与目录一起使用。这是处理
compare_files
命令的代码:
https://gitlab.kitware.com/cmake/cmake/-/blob/a3f76a4e4dc15997f22306b002fbc452af1259a6/Source/cmcmd.cxx#L771
下面使用的
cmSystemTools::FilesDiffer
不适用于目录:
https://gitlab.kitware.com/cmake/cmake/-/blob/a3f76a4e4dc15997f22306b002fbc452af1259a6/Source/kwsys/SystemTools.cxx#L2308
您可能想要使用的是
file(GLOB_RECURSE)
+ "${CMAKE_COMMAND}" -E compare_files ...
。