我的电脑是macos 10.15.6,之前一直用的是xcode(不得不说,Xcode虽然占内存但是真香!),由于之后需要用到设计编程图形化界面Qt,所以下载vscode与Qt相配。
之前看了大量教程配置vscode,但最后都配得一团糟,最近正好有空闲的时间,所以重新下载了vscode重新配置。
过程实在是太艰辛了,花了我一整天的时间,我把过程及遇到的所有坑都吐血整理如下,希望对你有些帮助。
code .
命令的访问方法,具体写在最后。用这位老哥的一行代码解决:
Homebrew国内如何自动安装(国内地址)(Mac & Linux)
效果如下:
1. brew install wget
2. brew install cmake
3. brew install opencv
brew info opencv
brew info opencv
后,提示有一部分未安装成功:配置完成后发现此处错误不影响后续配置。
感觉Mac配置vscode会遇到的问题是个玄学,网上的各种解决办法是否适用于自己也是个玄学。所以我此处只贴出我遇到的问题以及最终的解决办法(均已解决),和我最终的四个配置文件。
简单来说:
"externalConsole":false
一行代码中的false
改为true
即可,这可以解决一部分人的问题。{
"label": "Open Terminal",
"type": "shell",
"command": "osascript -e 'tell application \"Terminal\"\ndo script \"echo hello\"\nend tell'",
"problemMatcher": []
}
之后在Terminal > Run Task … 中选择 Open Terminal,点击后不会跳出什么提示,但是再次运行时就会出现独立终端了。
在按照官网中给出的代码调试时,会出现如下错误提示:
语法没有错,明显是编译器的编译标准太老了,在近几年的C++新标准(c++17)新出之后,就已经可以对vector定义时进行初始化。
看了网上的解决办法:
依次找到:文件>首选项>设置>用户设置>扩展>run code configurate>Executor Map,然后点击在settings.json中编辑
找到cpp那一行,修改代码为cd $dir && clang++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt
,若使用的是g++编译器,就将命令中的clang++
改为g++
,此行代码的具体功能可以参考文档.
新编辑cpp之后进行保存,但是每次执行的仍然是最初的cpp,并有如下错误提示:
解决办法是在launch.json中加入"preLaunchTask":"Build"
此行代码
注意preLaunchTask与tasks.json中的label相对应,所以在tasks.json中也要作相应修改:
问题得到解决。
多文件编译时会出现ld错误提示。
解决办法:只需要将tasks.json中的参数修改一下即可:
若单文件编译就使用第一行参数,多文件编译就使用第二行参数。问题解决。
最后,贴出我的四个配置文件。
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"macFrameworkPath": [
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++: clang++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb",
"preLaunchTask": "Build"
},
]
}
{
"tasks": [
{
"type": "cppbuild",
"label":"Build",
// "label": "C/C++: clang++ build active file",
"command": "/usr/bin/clang++",
"args": [
"-fdiagnostics-color=always",
"-g",
//以下二选一
//"${file}",//用于单文件编译
"${fileDirname}/*.cpp",//用于多文件编译
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"-std=c++17"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
},
{
"label": "Open Terminal",
"type": "shell",
"command": "osascript -e 'tell application \"Terminal\"\ndo script \"echo hello\"\nend tell'",
"problemMatcher": []
}
],
"version": "2.0.0"
}
执行命令后,重新启动终端以使新的$ PATH值生效。
然后,在相应文件夹的终端中输入 code .
即可直接用vscode打开文件夹了。