帮同事排查 Windows 平台上 CMake 执行 git process 的问题,具体表现为 git log
的中文输出是乱码。通过设置logOutpuptEncoding=utf-8
等方式,cmake打印的信息还是乱码。
在 bash 中执行相同的命令,git log
的中文信息输出正常,因此判断是CMake捕获git子进程返回的字符串有误。由于CMake中不存在类似 iconv
的命令,通过查阅CMake官方文档了解到 execute_process
有一个 ENCODING 的参数,将其设置为UTF-8 问题就解决了:
execute_process( COMMAND git log xxx WORKING_DIRECTOR xxx OUTPUT_VARIABLE xxx ENCODING UTF-8 )
PS:这个问题我和同事都尝试借助AI来解决,但是AI给出的答案都不靠谱,甚至直接给了错误的方法,最后还是通过阅读官方文档解决了问题。所以,虽然AI都很自信,但也不能盲目相信。
发表回复