使用“cmake -E Compare_files”比较目录时出现错误结果

问题描述 投票:0回答:1

我正在尝试编写一个 CTest 测试,将输出目录与另一个已知正确的目录(黄金)进行比较。

我使用了工具

cmake -E compare_files <file1> <file2>
,它应该也适用于我在网上收集的少量目录。

add_test("cmp_to_golden_${test_name}" "${CMAKE_COMMAND}" -E compare_files 
    "${output_path}"
    "${golden_path}"
)

我在网上没有找到任何有用的东西,并且命令本身不打印任何内容,所以我不知道为什么它返回 1 (意味着它认为它们是不同的)。我确信这些目录与我将输出复制粘贴到黄金目录中的目录相同,但它仍然不起作用。仅当我将相同的路径作为两个参数时它才有效。

我错过了什么?我可能认为该工具确实不是为目录而设计的,但我想对此进行一些确认。

c++ cmake comparison ctest
1个回答
0
投票

它不应该与目录一起使用。这是处理

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 ...

© www.soinside.com 2019 - 2024. All rights reserved.