最近在用vscode写C++代码,涉及到一些配置,记录下来。
根据
至少要安装c++扩展
另外还需要至少增加cmake的支持
最后我选择在vscode中安装C/C++ Extention Pack
然后配置C/C++插件。这个插件的配置分2部分,一部分在.vscode/settings.json,另外一部分在.vscode/c_cpp_properties.json。要注意的是,这里的配置都是如何在vscode中提供代码智能识别、智能推断的功能,不是最后要生成的二进制文件所用的。
首先配置settings.json
进入“文件->首选项->设置”,最好是切换到“工作区”,然后找到“扩展->C/C++->Intelli Sense Engine”将其设置为“Tag Parse”,这样它才能在读取头文件的时候把目录下面的子目录中的头文件都读取进来。如果没有设置,那么你就要把大量嵌套的目录都塞到配置的头文件目录列表里,那样太麻烦,而且容易丢失。
然后设置“扩展->C/C++->Intelli Sense Engine Fallback”,默认是Disabled,要确认是Disabled。如果是Enabled它就会自动修改你的代码,这种智能有时候很智障。
如果确实需要智能提示,可以安装clangd插件,clangd插件和微软出品的C++插件有冲突。上面说的关闭Intelli Sense就可以避免冲突。然后就可以使用clangd的智能提示了,这个比较好。
另外还有一项是“Formating”,推荐选择clangFormat。
clangformat是一个可执行程序。
然后找到“扩展->C/C++->Clang_format_style”,这里有提示,可以看提示。可以直接把clangformat命令所支持的参数直接写到这里,不过更多更复杂的配置需要靠配置文件,这样就要把这一项设置为file。
然后切换到命令行,在项目根目录下运行
clang-format -style=llvm -dump-config > .clang-format
这样就会把llvm风格的配置直接导出到.clang-format文件中,如果想要导出其他风格的,可以运行
clang-format --help
查看其他选项。
文件生成后,可以用vscode打开,逐条调整。比如说ColumnLimit,这代表一行包含多少个字符,多于这个值就要换行,默认值是80,这符合历史传统,不过因为大家现在都用大屏幕,所以这个值有点小,我会把它调大。
更多更详细的配置选项,可以查看
Clang-Format Style Options — Clang 16.0.0git documentation
当然以上也可以直接编辑settings.json加入以下内容
"C_Cpp.formatting": "clangFormat",
"C_Cpp.clang_format_style": "file",
"C_Cpp.intelliSenseEngineFallback": "Disabled",
"C_Cpp.intelliSenseEngine": "Tag Parser",
然后配置c_cpp_properties.json
然后进入“查看->命令面板”,输入“C/C++”会自动提示,进入“配置编辑(UI)”就可以在图形界面进行配置,主要是:编译器路径、IntelliSense模式、C标准、C++标准这几项。然后会自动生成c_cpp_properties.json
对于“包含路径”这一项,默认会把当前目录下的所有子目录都包含。另外如果前面设置了“Tag Parse”,也会把编译器自带的以及系统默认的目录下的头文件目录都包含。
以上的配置都是如何在vscode中提供代码智能识别、智能推断的功能。设置生成二进制的编译器是在cmake中设置的。
配置编译器
进入“查看->命令面板”,输入“cmake”按照提示,选择“Select a Kit”,在这里选择生成二进制时用的编译器。智能提示的编译器和生成二进制的编译器最好一致,这样语法完全兼容。
进入“文件->首选项->设置”找到“cmake:Automatic Reconfigure"取消勾选,这样当cmake选项变动时不会自动刷新。vscode默认是自动重新配置的,如果CMakeLists.txt出现了一些变动,vscode会自动重新把cmake的设置进行重新配置,里面如果涉及到一些庞大的库,更新的时候,有可能会全部重新编译,这个太耗时。
如果确实需要重新配置,就进入“查看->命令面板”,输入“cmake”按照提示,选择“delete cache and reconfigure”就可以。
MSVC
编译提示信息乱码
在使用MSVC作为编译器时,会看到编译过程中的提示信息显示为乱码。
找到“文件->首选项->设置”找到“扩展->cmake tools->output log encoding”,默认是auto,把它改为utf-8即可。再次build的时候,编译器的输出信息就可以正确显示了
找不到头文件
进入“查看->命令面板”,输入“C/C++”会自动提示,进入“配置编辑(UI)”,找到包含路径,把MSVC自带的include目录加进去,注意要把目录分隔符从“\”改成“/”,另外还要把解析模式改成Tag Parse,否则不会在子目录搜索。
D:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.42.34433/include
如果是Linux系统或者wsl上使用gcc的话,以上问题不会遇到。
本文介绍了如何在Visual Studio Code(VSCode)中配置C++开发环境,包括安装必要的扩展,如C/C++ Extension Pack,设置IntelliSenseEngine为TagParser以正确识别头文件,使用clangFormat进行代码格式化,并通过.clang-format文件定制格式风格。同时,文章提到了配置c_cpp_properties.json以指定编译器路径和标准,以及通过CMake选择生成二进制的编译器。最后,强调了智能提示的编译器与生成二进制的编译器保持一致的重要性。
1万+

被折叠的 条评论
为什么被折叠?



