CMake:如果文件相同,configure_file() 不会触及?
CMake: configure_file() does not touch if the file is the same?
通过检查示例文件out.txt
前后运行configure_file(in.txt out.txt)
的时间戳,似乎最后修改日期没有改变,当新内容相同时out.txt
文件已经存在(因此当变量相同时)。
真的有保证吗?我在 CMake 文档中找不到这个。
Is it really true and guaranteed? I can't find about this in CMake documentation.
你在这里部分回答了你自己的问题:如果没有记录,肯定不能保证。幸运的是,它 被 记录在案,这里:https://cmake.org/cmake/help/latest/command/configure_file.html
If the input file is modified the build system will re-run CMake to re-configure the file and generate the build system again. The generated file is modified and its timestamp updated on subsequent cmake runs only if its content is changed.
在内部,configure_file
将其输出写入临时文件,然后调用 cmake -E copy_if_different
的等效项。也就是说,它会进行 byte-for-byte 比较,并且仅在存在差异时才进行复制(从而更新时间戳)。
通过检查示例文件out.txt
前后运行configure_file(in.txt out.txt)
的时间戳,似乎最后修改日期没有改变,当新内容相同时out.txt
文件已经存在(因此当变量相同时)。
真的有保证吗?我在 CMake 文档中找不到这个。
Is it really true and guaranteed? I can't find about this in CMake documentation.
你在这里部分回答了你自己的问题:如果没有记录,肯定不能保证。幸运的是,它 被 记录在案,这里:https://cmake.org/cmake/help/latest/command/configure_file.html
If the input file is modified the build system will re-run CMake to re-configure the file and generate the build system again. The generated file is modified and its timestamp updated on subsequent cmake runs only if its content is changed.
在内部,configure_file
将其输出写入临时文件,然后调用 cmake -E copy_if_different
的等效项。也就是说,它会进行 byte-for-byte 比较,并且仅在存在差异时才进行复制(从而更新时间戳)。