2020-06-14
首先,介绍自己电脑:Ubuntu18.04、VS Code 1.46版
本文目的:为VS Code配置好C++ 开发环境,以及VS Code +CMake的配置
对于C++ 工程,有四个必要的json
配置文件,先ctrl+shift+p打开输入指令分别是:
c_cpp_properties.json
:配置项目结构,自动生成和更新,输入C/C++:Edit configurationtask.json
: 构建和编译运行项目,输入Task:Configure Task,模板,Otherslaunch.json
: 调试,读取可执行文件setting.json
: 输入setting
针对两种情况分别进行介绍,最后根据十四讲中使用Eigen进行实验。
一、VS Code 的C++开发环境
摘要:
1.新建C/C++工程,VScode以文件夹为管理工程的方式,因此需要建立一个文件夹来保存工程。
2.配置launch.json
文件,读取可执行文件
。需要进行修改地方的是指定运行的文件,其次我们还可以在里面添加build任务,用于调试
。
3.配置tasks.json
文件,这个文件用来方便用户自定义任务,我们可以通过这个文件来添加g++/gcc或者是make命令,方便我们编译程序
。
4.之后就可以进行基础的C/C++开发与调试了。
1、建立工程
新建一个工作区文件夹,然后在VScode中打开这个文件夹。VScode调试必须在工作区文件夹下,单独打开一个文件调试会报错。VScode不支持中文路径,文件夹名称不能有空格。
#include <iostream>
using namespace std;
int main(){
cout<<"Hello World"<<endl;
getchar();
return 0;
}
2、更改配置文件(launch.json)
launch.json目的:读取执行out文件
点击左侧的Debug按钮,选择添加配置(Add
configuration),然后选择C++(GDB/LLDB),然后点击默认生成,将自动生成launch.json文件,具体操作如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",// 配置名称
"type": "cppdbg",// 配置类型
"request": "launch",// 请求配置类型,launch或者attach
"program": "输入程序名称,例如 ${workspaceFolder}/a.out",// 进行调试程序的路径,程序生成文件.out
"args": [],// 传递给程序的命令行参数,一般为空
"stopAtEntry": false,// 调试器是否在目标的入口点停止,
"cwd": "${workspaceFolder}",// 项目目录
"environment": [],
"externalConsole": false,// 调试时是否显示控制台窗口,一般为true显示控制台
"MIMode": "gdb",// 指定连接的调试器
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
更改:
将program内容改为调试时运行的程序。
"program": "输入程序名称,例如 ${workspaceFolder}/a.out"
改为
"program": "${workspaceFolder}/${fileBasenameNoExtension}.out"
新增,preLaunchTask 使得每次调试之前会自动进行build:
"preLaunchTask": "build",
最终版本为:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEnt