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

i5desfxk  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(134)

我正在尝试编写一个CTest测试,将输出目录与另一个已知正确的目录(golden)进行比较。
我使用了工具cmake -E compare_files <file1> <file2>,它应该也可以处理我在网上收集的一些目录。

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

字符串
我在网上没有找到任何有用的东西,命令本身也不打印任何东西,所以我不知道为什么它返回1(这意味着它认为它们是不同的)。我确信目录是相同的,因为我复制粘贴输出到黄金目录,它仍然不起作用。只有当我把相同的路径作为两个参数时,它才起作用。
我错过了什么?我可能是该工具真的不是为目录,但我想在这方面的一些确认。

nfeuvbwi

nfeuvbwi1#

它不应该处理目录。下面是处理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 ...

相关问题