使用 cmake 到 compare_files 不同的行结尾

Using cmake to compare_files with different line endings

我正在使用 cmake 来比较两个文件,如下所示:

cmake -E compare_files file1 file2

麻烦的是file1file2有不同的行尾。我正在使用 cmake,因为我已经将它用于我的构建;上面的命令正在我的测试中。

目前我不需要任何特别的东西。只是一种告诉用户文件不同的方法。 (希望没有差异。)如果存在差异,我将在此时报告并更仔细地手动检查。

如果有方便的报告方式(例如,打印到屏幕或写入文件),那么我愿意听取关于如何实现这一点的建议。但我真的只是想知道是否存在差异,不同的行尾是否不重要。

是否有我遗漏的标志或选项会忽略行尾的差异?

不幸的是,它似乎是一个 unsupported feature (issue is "tracked" here,看起来永远不会被处理)。

但有一个解决方法:您可以在开始比较之前使用 configure_file 创建具有统一行结尾的文件副本。例如:

configure_file(<input> <output> NEWLINE_STYLE CRLF)

请注意,选项 COPYONLYNEWLINE_STYLE 不兼容,因此您必须注意 configure_file 不会进行任何意外的变量替换。

有了 CMake 3.14,您现在可以:

cmake -E compare_files --ignore-eol file1 file2