powershell 输出至文件 utf8 编码

本文讲述了在Windows上使用MSVC编译C++程序时,如何通过CMake生成Ninja工程并正确导出compile_commands.json以实现VSCode插件准确跳转定义和宏,以及如何处理不同版本PowerShell对UTF-8编码的兼容性问题。
摘要由CSDN通过智能技术生成

遇到此问题的场景:

winows 上编写 c++ 程序,使用 MSVC 编译器

先用 CMake 生成 Ninja 工程,再用 Ninja 可以导出 compile_commands.json ,里面包含了每个文件的编译指令

vscode 的 c/c++ 插件指定 compile_commands.json 之后,跳转定义、宏之类的就会比较准确

(clangd 解析 gcc 对应的 compile_commands.json 文件时很好用,但是无法解析 msvc 对应的 compile_commands.json)

使用 ninja 导出 compile_commands.json 编译指令文件时,用到了下面的命令:

ninja -t compdb > compile_commands.json

在 notepad++ 中查看,发现这个文件是用 "UTF-16 LE" 格式编码的

而其他源代码文件都是 utf-8 格式编码的,直接打开上面的文件显示为乱码

后面查找到下面的指令,可以在导出文件时,指定为 utf-8 bom 编码:

ninja -t compdb | out-file compile_commands.json -encoding utf8

系统自带的 powershell 是 v5.1 版本的,不支持导出 utf-8 No Bom 编码格式的文件,不过已经够用了

------------------------

看官方文档,powershell 7 的版本支持导出 utf-8 no bom 的格式

下载测试了下确实可以

ninja -t compdb | out-file compile_commands.json -encoding utf8NoBom

还有就是 powershell 7 的命令变成  pwsh.exe

简单试用了下,powershell 7 比 powershell 5.1 好用多了 !!!

这个命令补全,刚输入一个 n ,完整的命令就提示出来了~~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值