Ubuntu18.04如何配置VSCode+CMake的C++开发环境

本篇内容主要讲解“Ubuntu18.04如何配置VSCode+CMake的C++开发环境”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ubuntu18.04如何配置VSCode+CMake的C++开发环境”吧!

首先,介绍自己电脑:Ubuntu18.04、VS Code 1.46版

本文目的:为VS Code配置好C++ 开发环境,以及VS Code +CMake的配置

对于C++ 工程,有四个必要的json配置文件,先ctrl+shift+p打开输入指令分别是:

  • c_cpp_properties.json配置项目结构,自动生成和更新,输入C/C++:Edit configuration

  • task.json: 构建和编译运行项目,输入Task:Configure Task,模板,Others

  • launch.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>
usingnamespacestd;

intmain(){
cout<<"HelloWorld"<<endl;
getchar();
return0;
}

Ubuntu18.04如何配置VSCode+CMake的C++开发环境

2、更改配置文件(launch.json)

launch.json目的:读取执行out文件

点击左侧的Debug按钮,选择添加配置(Addconfiguration),然后选择C++(GDB/LLDB),然后点击默认生成,将自动生成launch.json文件,具体操作如下:

Ubuntu18.04如何配置VSCode+CMake的C++开发环境

{
//使用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",

最终版本为:

{
//UseIntelliSensetolearnaboutpossibleattributes.
//Hovertoviewdescriptionsofexistingattributes.
//Formoreinformation,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":[],
"stopAtEntry":false,
"cwd":"${workspaceFolder}",
"environment":[],
"externalConsole":true,
"MIMode":"gdb",
"preLaunchTask":"build",
"setupCommands":[
{
"description":"Enablepretty-printingforgdb",
"text":"-enable-pretty-printing",
"ignoreFailures":true
}
]
}
]
}

3、更改编译任务(task.json)

task.json:定义编译方法,转为计算机可识别的语言,生成out文件

快捷键ctrl+shift+p打开命令行,输入:Task:Configure Task 使用模版创建Tasks.json文件 →Others:

Ubuntu18.04如何配置VSCode+CMake的C++开发环境

{
//Seehttps://go.microsoft.com/fwlink/?LinkId=733558
//forthedocumentationaboutthetasks.jsonformat
"version":"2.0.0",
"tasks":[
{
"label":"echo",//任务名
"type":"shell",
"command":"echoHello"//指令
}
]
}

更改为:

{
//Seehttps://go.microsoft.com/fwlink/?LinkId=733558
//forthedocumentationaboutthetasks.jsonformat
"version":"2.0.0",
"tasks":[
{
"label":"build",
"type":"shell",
"command":"g++",
"args":["-g","${file}","-std=c++11","-o","${fileBasenameNoExtension}.out"]
}
]
}

4、断点调试

以上工作完成后即可编译运行C/C++程序。不过在调试之前最好先CTRL+SHIFT+B编译一下,选择执行我们的build任务,build成功后,点击开始调试。

Ubuntu18.04如何配置VSCode+CMake的C++开发环境

二、CMake调试C++ 工程

1、创建文件

在文件夹内创建文件

~$touchmain.cpp
~$touchCMakeLists.txt

CMakeLists.txt

cmake_minimum_required(VERSION2.6)
#工程vscode_cmake
project(vscode_cmake)

#dubug模式
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-g")

set(SRC_LISTmain.cpp)
#可执行程序result
add_executable(result${SRC_LIST})

main.cpp

#include<iostream>

usingnamespacestd;

intmain(){

inta=2+3;
intb=a+3;

for(inti=0;i<10;i++){
cout<<"hellovscode&cmake..."<<endl;
}

return0;
}

其中, 需要在CMakeLists.txt 里加set (CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -g”)开启debug 不然断点调试是无效的

2、开始调试

首先要build生成可执行文件result,有了可执行文件才能进行debug操作,然后再设置断点,按下F5,进行调试。

在图中最左侧第四个小蜘蛛形状的图标(调试),点击左上方的小齿轮,添加配置(C++GDB/LLDB),修改launch.json文件为:

{
//使用IntelliSense了解相关属性。
//悬停以查看现有属性的描述。
//欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387
"version":"0.2.0",
"configurations":[
{
"name":"(gdb)启动",
"type":"cppdbg",
"request":"launch",
"program":"${workspaceFolder}/build/result",//更改
"args":[],
"stopAtEntry":false,
"cwd":"${workspaceFolder}",
"environment":[],
"externalConsole":false,
"MIMode":"gdb",
"setupCommands":[
{
"description":"为gdb启用整齐打印",
"text":"-enable-pretty-printing",
"ignoreFailures":true
}
]
}
]
}

更改了

"program":"${workspaceFolder}/build/result",//更改

是为了生成的可执行文件result到build文件夹内。之后按下最下方的Build按键,生成可执行文件。

接下来设置断点,按下F5,进行调试

Ubuntu18.04如何配置VSCode+CMake的C++开发环境

3、配置 C++ IntelliSense

Ctrl+shift+p打开命令选项,选择C/C++:Edit configuration ,自动生成 c_cpp_properties.json配置文件。

Ubuntu18.04如何配置VSCode+CMake的C++开发环境

{
"configurations":[
{
"name":"Linux",
"includePath":[
"${workspaceFolder}/**"
],
"defines":[],
"compilerPath":"/usr/bin/clang",
"cStandard":"c11",
"cppStandard":"c++14",
"intelliSenseMode":"clang-x64",
"configurationProvider":"ms-vscode.cmake-tools"
}
],
"version":4
}

最主要的事includePath的引用和库的路径,根据引用内容进行配置。

三、实例分析

打开《视觉SLAM十四讲》的ch4的useGeometry文件夹CmakeLists.txt:

cmake_minimum_required(VERSION2.8)
project(geometry)

#添加Eigen头文件
include_directories("/usr/include/eigen3")

add_executable(eigenGeometryeigenGeometry.cpp)

eigenGeometry.cpp:

#include<iostream>
#include<cmath>
usingnamespacestd;

#include<Eigen/Core>
//Eigen几何模块
#include<Eigen/Geometry>

/****************************
*本程序演示了Eigen几何模块的使用方法
****************************/

intmain(intargc,char**argv)
{
//Eigen/Geometry模块提供了各种旋转和平移的表示
//3D旋转矩阵直接使用Matrix3d或Matrix3f
Eigen::Matrix3drotation_matrix=Eigen::Matrix3d::Identity();
//旋转向量使用AngleAxis,它底层不直接是Matrix,但运算可以当作矩阵(因为重载了运算符)
Eigen::AngleAxisdrotation_vector(M_PI/4,Eigen::Vector3d(0,0,1));//沿Z轴旋转45度
cout.precision(3);
cout<<"rotationmatrix=\n"<<rotation_vector.matrix()<<endl;//用matrix()转换成矩阵
//也可以直接赋值
rotation_matrix=rotation_vector.toRotationMatrix();
//用AngleAxis可以进行坐标变换
Eigen::Vector3dv(1,0,0);
Eigen::Vector3dv_rotated=rotation_vector*v;
cout<<"(1,0,0)afterrotation="<<v_rotated.transpose()<<endl;
//或者用旋转矩阵
v_rotated=rotation_matrix*v;
cout<<"(1,0,0)afterrotation="<<v_rotated.transpose()<<endl;

//欧拉角:可以将旋转矩阵直接转换成欧拉角
Eigen::Vector3deuler_angles=rotation_matrix.eulerAngles(2,1,0);//ZYX顺序,即rollpitchyaw顺序
cout<<"yawpitchroll="<<euler_angles.transpose()<<endl;

//欧氏变换矩阵使用Eigen::Isometry
Eigen::Isometry3dT=Eigen::Isometry3d::Identity();//虽然称为3d,实质上是4*4的矩阵
T.rotate(rotation_vector);//按照rotation_vector进行旋转
T.pretranslate(Eigen::Vector3d(1,3,4));//把平移向量设成(1,3,4)
cout<<"Transformmatrix=\n"<<T.matrix()<<endl;

//用变换矩阵进行坐标变换
Eigen::Vector3dv_transformed=T*v;//相当于R*v+t
cout<<"vtranformed="<<v_transformed.transpose()<<endl;

//对于仿射和射影变换,使用Eigen::Affine3d和Eigen::Projective3d即可,略

//四元数
//可以直接把AngleAxis赋值给四元数,反之亦然
Eigen::Quaterniondq=Eigen::Quaterniond(rotation_vector);
cout<<"quaternion=\n"<<q.coeffs()<<endl;//请注意coeffs的顺序是(x,y,z,w),w为实部,前三者为虚部
//也可以把旋转矩阵赋给它
q=Eigen::Quaterniond(rotation_matrix);
cout<<"quaternion=\n"<<q.coeffs()<<endl;
//使用四元数旋转一个向量,使用重载的乘法即可
v_rotated=q*v;//注意数学上是qvq^{-1}
cout<<"(1,0,0)afterrotation="<<v_rotated.transpose()<<endl;

return0;
}

launch.json配置为:

{
//使用IntelliSense了解相关属性。
//悬停以查看现有属性的描述。
//欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387
"version":"0.2.0",
"configurations":[
{
"name":"(gdb)启动",
"type":"cppdbg",
"request":"launch",
"program":"${workspaceFolder}/build/eigenGeometry",//更改
"args":[],
"stopAtEntry":false,
"cwd":"${workspaceFolder}",
"environment":[],
"externalConsole":false,
"MIMode":"gdb",
"setupCommands":[
{
"description":"为gdb启用整齐打印",
"text":"-enable-pretty-printing",
"ignoreFailures":true
}
]
}
]
}

task.json配置为:

{
//Seehttps://go.microsoft.com/fwlink/?LinkId=733558
//forthedocumentationaboutthetasks.jsonformat
"version":"2.0.0",
"tasks":[
{
"label":"makebuild",//编译的项目名,build,更改
"type":"shell",
"command":"cd./build;cmake../;make",//编译命令,更改
"group":{
"kind":"build",
"isDefault":true
}
},
{
"label":"clean",
"type":"shell",
"command":"makeclean",


}
]
}

c_cpp_properties.json

{
"configurations":[
{
"name":"Linux",
"includePath":[

"${workspaceFolder}/**",//更改
"/usr/include",
"/usr/local/include"
],
"defines":[],
"compilerPath":"/usr/bin/gcc",
"cStandard":"c11",
"cppStandard":"c++17",
"intelliSenseMode":"clang-x64",
"compileCommands":"${workspaceFolder}/build/compile_commands.json"//更改
}
],
"version":4
}

按下build生成可执行文件eigenGeometry

Ubuntu18.04如何配置VSCode+CMake的C++开发环境

生成可执行文件后,按下F5,进行调试

Ubuntu18.04如何配置VSCode+CMake的C++开发环境

参考:

到此,相信大家对“Ubuntu18.04如何配置VSCode+CMake的C++开发环境”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

发布于 2021-03-13 15:41:15
收藏
分享
海报
0 条评论
177
上一篇:怎么解决python路径错误,运行.py文件,找不到路径的问题 下一篇:Javac/javap 自带工具如何使用
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码