mac vscode shell环境问题_Mac系统上为VSCode 配置LLVM环境

在Mac上使用VSCode进行C++开发时,由于默认的“C/C++”工具包存在诸多问题,作者选择切换到LLVM环境。然而,配置过程中遇到了clangd无法找到标准库头文件的困扰。通过查阅官方文档,作者发现需要手动指定编译器地址和设置--query-driver选项来解决。同时,为了使clangd理解项目的引用结构,需要生成并配置compile_commands.json文件。经过一系列步骤,最终成功配置了LLVM环境,提升了开发体验。
摘要由CSDN通过智能技术生成

6014c57d96fbd0ec0cce22d6a3375f1b.png

VSCode是最近用的很顺手的文本编辑平台。相对轻量,扩展能力也非常强。

但最近在用VSC写C++的时候遇到了不大不小的麻烦:一般C/C++的工具集都会用微软默认的“C/C++” 工具包。这个工具包大杂烩功能上该有的都有,但真的烂。bug不少,导航内容会错误,Debugger有时追踪不到vector的内容,最严重的是在解析引用地址时似乎会陷入死循环,cpptools占用CPU 100%,非常恼人。

于是决定换个环境,全面使用LLVM系的拓展插件以及环境工具。

f60ae1ca0b05a7cc88e8a9a6b0cf1bc7.png
主要是CodeLLDB和clangd

本来以为安装了插件就解决了问题,但发现随之而来的是一系列的麻烦事。由于VSC默认会用Xcode下的 command line tools,这其中似乎没有clangd。引用分析以及导航工具还是很需要的,这个得要有。虽然在安装clangd插件的时候提示了直接下载clangd,但由于我的MacOS版本还是High Sierra(也一时半会儿不准备升级),直接下的二进制文件没法用。

于是还是去brew了整套LLVM,为了防止冲突还必须要卸载Xcode。无所谓了,反正一般也不会用。于是这么一折腾,就要为VSC全部重新配置各个地址了。

首先是编译器,由于我的开发内容的入口是cmake,于是要为cmake手动指定编译器

tasks.json 文件的bash命令添加 -D 对应的变量。虽然理论上可以直接在cmake文件里直接设定覆盖 CMAKE_C_COMPILER 变量的值,但 stack overflow 上都说不推荐,目前没有深究具体原因,还是直接在参数上添加了。

"command": {
    "cd build && cmake -D CMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -D CMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ .. && make"
}

Debugger部分,为 launch.json 文件添加对应操作系统的debugger以及路径

"osx": {
    "MIMode": "lldb",
    "miDebuggerPath": "/usr/local/opt/llvm/bin/lldb"
}

最麻烦的还是clangd,在setting里找到相应配置,修改clangd的地址。

23b64a8c91b9f6f6f6af9c4ccfabda34.png

之后头疼的问题来了,clangd一直提示找不到标准库头文件。我找了很久在哪里修改库地址但都无功而返。

https://clangd.llvm.org/troubleshooting.html 官方说明文档里提到可能需要手动指定编译器地址,于是在 clangd 的 Arguments 添加上--query-driver 指定到 clang++ 地址,才终于解决了这个问题。真没想到标准库的地址会和编译器绑定上。

还需要为 clangd 添加 includes 数据来让 clangd 理解项目的引用结构。https://clangd.llvm.org/installation.html 里面有说明各种生成方法。cmake可以直接将参数CMAKE_EXPORT_COMPILE_COMMANDS设为1便会在默认地址生成供 clangd 使用的compile_commands.json 文件。这个文件要放在项目根目录下,由于我的项目 cmake 生成的东西都放在了build文件夹里,可以建立个符号链接(ln -s)连过去就好了。

f747472d331aa28ae4d55ddf4aa1ec05.png

大功告成,用起来又快又舒服,心情一下子好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值