配置开发环境
第一步,安装vscode中c/c++的插件—— C++ extension for VS Code
第二步,检查Clang是否已经安装
~ » clang --version
Apple clang version 11.0.0 (clang-1100.0.33.16)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
如果没有安装的话,在终端,使用以下语句进行安装:
xcode-select --install
第三步,创建Hello World项目
可以直接用命令行,但是也可以直接在UI界面创建
mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .
其中,code .
表示在.
目录打开vscode,这个当前目录就是之后的workspace/工作目录
。在接下来的操作中,会在工作目录中的.vscode
文件夹里,创建三个文件,如下:
tasks.json
(compiler build settings)launch.json
(debugger settings)c_cpp_properties.json
(compiler path and IntelliSense settings)另外,打开后,会发现hellworld
显示在vscode里是大写的HELLOWORLD
新建一个cpp文件,粘贴以下内容:
#include
#include
#include
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
如果此时报错了,例如:
这些红色其实都是在告诉你,代码有语法错误。
错误原因
解决方案
#include
#include
#include
using namespace std;
int main()
{
vector<string> msg;
msg.push_back("Hello");
msg.push_back("C++");
msg.push_back("World");
msg.push_back("from");
msg.push_back("VS code");
msg.push_back("and the C++ extension!");
for(int i=0; i<msg.size(); i++)
{
cout<<msg[i]<<" ";
}
cout<<endl;
}
}
然后就会看到没有错误提示了,tasks.json
文件来告诉vscode如何去构建/编译这个程序。终端
->配置默认生成任务
,然后弹出的窗口中选择C/C++ clang++ build active file
tasks.json
文件,包含以下内容:{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang++ 生成活动文件",
"command": "/usr/bin/clang++", # 明确所使用的编译器
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}" # 明确工作目录
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: /usr/bin/clang++"
}
]
}
task.json
文件参数的详细介绍,可以看这里helloworld.cpp
文件,继续保持它在编辑器面板在,是当前的活跃文件,因为下一步使用的就是活跃文件⇧⌘B
或者终端
->Run build Task
来执行编译+
按钮,会得到一个以helloworld
为工作目录的新终端,ls
,会看到可执行文件helloworld
以及debug文件helloworld.dSYM
./helloworld
就可以运行这个helloworld
程序啦。如下:tasks.json
中的参数来编译多个文件${workspaceFolder}/*.cpp
代替${file}
,这样就会编译当前目录下所有的.cpp
文件...
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
...
"${fileDirname}/${fileBasenameNoExtension}"
换成一个硬编码的名称(固定的,不能改的),例如:${workspaceFolder}/myProgram.out
如果还需要debug
,那么也需要做一个配置(每次新弄一个project,就要重新生成一次配置文件。。)
launch.json
文件来配置vscode,当使用F5
进行debug时,会触发LLDB debugger菜单栏
->运行
->添加配置
,然后选择C++ (GDB/LLDB)
(依然要保证,helloworld.cpp
是当前的活跃文件) clang++ build and debug active file
,然后可能会出现调试界面,结束后会生成一个launch.json
文件对于launch.json
文件
stopAtEntry
默认为false
,将其改为true
,则在开始debug的时候,程序会停在main方法。launch.json
中的preLaunchTask
参数值与tasks.json
中的label
值相同开启一个debug会话
helloworld.cpp
是当前的活跃文件,因为vscode会使用当前的活跃文件作为debug的对象F5
键,或者Run
->Starting Debugging
,就可以看到debug界面了。Step through the code,单步执行代码
有时候,可能要对程序执行过程中的某个变量进行监控,可以通过对变量添加监控实现这个目的
+
,输入要监控的变量的名称,msg[i]
也是可以的。msg
,就可以看到这个变量的值。如果想更好的使用C/C++ extension
,可以创建一个c_cpp_properties.json
文件,在这个文件中,可以设置编译器路径、包含路径(include paths)、要编译的C++标准(如C++17)等。
使用⇧⌘P(command+shift+P)快捷键,打开命令面板,在弹出的面板中选择C/C++: Edit Configurations (UI)
虽然只是某些语法风格有变化,但是对我这种小白应该非常不友好,需要储备一些内容
可以改代码,也可以直接修改编译器版本进而支持对应的语言版本。根据clange官网
另外,还有详细的版本对特定性能的支持表格,例如:
所以我本机的这个clang版本太低了,需要更新!
参考:
施行难度较高,风险较大,放弃。
如果debug不顺利,中文不太好找解决方案,
参考:vector initialization with {…} is not allowed in VS2012?
大致意思就是某些IDE会自带编译器,但是IDE版本自带的编译器版本可能比较旧,所以可能会导致不支持某些新的语言特性。
所以在定义字符串向量的时候,不支持{}
语法,只能用比较麻烦的方式定义,例如:
#include
#include
using namespace std;
int main()
{
vector<string> test;
test.push_back("hello");
test.push_back("world");
for(int i=0; i<test.size(); i++)
cout<<test[i]<<endl;
return 0;
}
之前搞conda的时候,就遇到过,因为换了zsh的shell,所以有些程序的执行路径找不到,只用改一下zsh里的配置就行。
参考:“code .” Not working in Command Line for Visual Studio Code on OSX/Mac
首先,打开访达
->Application
->找到vscode
->右击选择显示包内容
,
确认code.app
的位置,一般都是 /Applications/Visual Studio Code.app/Contents/Resources/app/bin
确认位置后,打开mac终端,准备配置.zshrc
中的vscode
路径
vim ~/.zshrc
在zshrc
文件中,加入export PATH="$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
,整体类似:
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="/Users/XXXX/.oh-my-zsh"
export PATH="/Users/XXXX/Documents/software/miniconda3/miniconda3/bin:$PATH"
export PATH="$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
加完之后,记得source ~/.zshrc
使得配置生效。
compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew_cask
。brew cleanup
可以修正根据stack overflow:Bad CMake executable “”. Is it installed or settings contain the correct path (cmake.cmakePath)? - Pixhawk 4 Development
大概意思就是 :出现这个错误,要么就是因为你没有安装cmake,要么就是没有在设置里给出正确的cmake路径,记得安装过cmake之后设置一下系统路径。关于CMake的安装,详见ITK——2. 在mac中配置及使用vscode示例的1.1部分
vim ~/.bashrc
# 或者如果是zsh的shell的话
vim ~/.zashrc
# 加入这句话
export PATH="/Applications/CMake.app/Contents/bin":"$PATH"
# 使修改生效
source ~/.zshrc
# 验证是否生效
~ » cmake --version
cmake version 3.22.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
另外,如果希望vscode里可以使用cmake,还需要确保安装了``插件,详见:CMake Tools
参考: