详解Ubuntu18.04配置VSCode+CMake的C++开发环境
首先,介绍自己电脑:Ubuntu18.04、VSCode1.46版
本文目的:为VSCode配置好C++开发环境,以及VSCode+CMake的配置
对于C++工程,有四个必要的json配置文件,先ctrl+shift+p打开输入指令分别是:
- c_cpp_properties.json:配置项目结构,自动生成和更新,输入C/C++:Editconfiguration
- task.json:构建和编译运行项目,输入Task:ConfigureTask,模板,Others
- launch.json:调试,读取可执行文件
- setting.json:输入setting
针对两种情况分别进行介绍,最后根据十四讲中使用Eigen进行实验。
一、VSCode的C++开发环境
摘要:
1.新建C/C++工程,VScode以文件夹为管理工程的方式,因此需要建立一个文件夹来保存工程。
2.配置launch.json文件,读取可执行文件。需要进行修改地方的是指定运行的文件,其次我们还可以在里面添加build任务,用于调试。
3.配置tasks.json文件,这个文件用来方便用户自定义任务,我们可以通过这个文件来添加g++/gcc或者是make命令,方便我们编译程序。
4.之后就可以进行基础的C/C++开发与调试了。
1、建立工程
新建一个工作区文件夹,然后在VScode中打开这个文件夹。VScode调试必须在工作区文件夹下,单独打开一个文件调试会报错。VScode不支持中文路径,文件夹名称不能有空格。
#includeusingnamespacestd; intmain(){ cout<<"HelloWorld"<
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",最终版本为:
{ //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:ConfigureTask使用模版创建Tasks.json文件→
Others: { //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成功后,点击开始调试。
二、CMake调试C++工程
1、创建文件
在文件夹内创建文件
~$touchmain.cpp ~$touchCMakeLists.txtCMakeLists.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
#includeusingnamespacestd; intmain(){ inta=2+3; intb=a+3; for(inti=0;i<10;i++){ cout<<"hellovscode&cmake..."< 其中,需要在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,进行调试
3、配置C++IntelliSense
Ctrl+shift+p打开命令选项,选择C/C++:Editconfiguration,自动生成c_cpp_properties.json配置文件。
{ "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十四讲》的ch3的useGeometry文件夹
CmakeLists.txt:cmake_minimum_required(VERSION2.8) project(geometry) #添加Eigen头文件 include_directories("/usr/include/eigen3") add_executable(eigenGeometryeigenGeometry.cpp)eigenGeometry.cpp:
#include#include usingnamespacestd; #include //Eigen几何模块 #include /**************************** *本程序演示了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"< 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
生成可执行文件后,按下F5,进行调试
参考:
https://blog.csdn.net/weixin_43374723/article/details/84064644
https://blog.csdn.net/zzz_xxj/article/details/86568353
https://blog.csdn.net/wanzew/article/details/83097457
https://blog.csdn.net/orange_littlegirl/article/details/88397361到此这篇关于详解Ubuntu18.04配置VSCode+CMake的C++开发环境的文章就介绍到这了,更多相关VSCodeCMake配置C++开发环境内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。