linux适应环境,Linux从入门到适应(一):VSCode C++环境配置

作为在Windows环境下习惯使用Visual Studio IDE的人,对于Linux环境下的Vim编辑使用十分难受,虽然网上很多人说vim非常牛逼和强大,但是我更加习惯于使用VS code的界面,所以我选择VS code作为编辑器使用。

VS code本身是一个编辑器,所以如果需要调试等功能需要自己安装一些插件,并且配置相关的json文件。

linux 环境下,g++和clang都可以作为C++的编译器,我这里选择使用的是clang。

首先是插件选择:

(1) C/C++ 微软自带的C/C++插件。

(2) C/C++ Clang Command Adapter:提供静态检测(Lint)

(3) Code Runner:右键即可编译运行单文件

(4) Bracket Pair Colorizer:彩虹花括号

(5) Include Autocomplete:提供头文件名字的补全

以上插件下载完之后,在文件工作区(workspace) 新建一个文件夹作为你项目的根目录文件,然后新建一个".vscode" 文件,该文件夹存放相关json的配置文件,其中launch.json 和tasks.json 两个配置文件是必须的,除了这两个之外,还可以加上setting.json。如果setting.json不加设置,就会使用设置,基本上满足使用了。

关于,launch.json的配置为:

// https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md

{

"version": "0.2.0",

"configurations": [

{

"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示

"type": "cppdbg", // 配置类型,这里只能为cppdbg

"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)

"program": "${fileDirname}/${fileBasenameNoExtension}.out", // 将要进行调试的程序的路径

"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可

"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,我一般设置为true

"cwd": "${workspaceFolder}", // 调试程序时的工作目录

"environment": [], // (环境变量?)

"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台

"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?

"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。

// "miDebuggerPath": "gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则去掉

"setupCommands": [ // 用处未知,模板如此

{

"description": "Enable pretty-printing for gdb",

"text": "-enable-pretty-printing",

"ignoreFailures": false

}

],

"preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应

}

]

}

tasks.json的配置为:

// https://code.visualstudio.com/docs/editor/tasks

{

"version": "2.0.0",

"tasks": [

{

"label": "Compile", // 任务名称,与launch.json的preLaunchTask相对应

"command": "clang++", // 要使用的编译器 clang++ 或者g++

"args": [

"${file}",

"-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out

"${fileDirname}/${fileBasenameNoExtension}.out",

"-g", // 生成和调试有关的信息

"-Wall", // 开启额外警告

"-static-libgcc", // 静态链接

// "-fcolor-diagnostics", // 彩色的错误信息?但貌似clang默认开启而gcc不接受此参数

// "--target=x86_64-w64-mingw", // clang的默认target为msvc,不加这一条就会找不到头文件;Linux下去掉这一条

"-std=c++11" // C语言最新标准为c11,或根据自己的需要进行修改

], // 编译命令参数

"type": "shell", // 可以为shell或process,前者相当于先打开shell再输入命令,后者是直接运行命令

"group": {

"kind": "build",

"isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件,我这里不多提

},

"presentation": {

"echo": true,

"reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never。具体参见VSC的文档

"focus": false, // 设为true后可以使执行task时焦点聚集在终端,但对编译c和c++来说,设为true没有意义

"panel": "shared" // 不同的文件的编译信息共享一个终端面板

}

// "problemMatcher":"$gcc" // 如果你不使用clang,去掉前面的注释符,并在上一条之后加个逗号。照着我的教程做的不需要改(也可以把这行删去)

}

]

}

然后ctrl+shift+B是编译,按F5是编译+运行。

以上是VS Code在Linux环境下使用的基本操作,日后有什么新的技能和发现我会更新或者修正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux指令能回滚么,如何在Ubuntu上撤消或回滚“ apt-get upgrade”命令?

我今天必须在Debian系统上执行此操作。首先,我确定了有问题的升级发生的时间范围,并检索了给出升级包的新旧版本号的日志条目:$ awk $1"2016-03-20" && $3"upgrade" /var/log/dpkg.log2016-03-20 16:58:22 upgra…

linux文件名过长无法删除,不能删除文件,出现“源文件名长度大于系统支持的长度...

有时候删除windows中的目录的时候,会出现"源文件名长度大于系统支持的长度", 而导致不能删除, 作为一个程序猿, 怎么可以被这个折服呢, 上代码:import java.io.File;/*** author 吴庆龙* 2015年10月13日 下午1:22:33*/public class DeleteFiles {public static void …

cpu system linux,LINUX system BOOT

64位处理器指的是CPU GPRs(General-Purpose Registers 通用寄存器)的数据宽度为64位计算机在接通电源的瞬间,CPU处于16位实模式,20位的寻址空间,即1MB,此时内存里没有任何数据对CPU来讲,系统中所有的存储器(含BIOS的RO…

linux下IPROTO_TCP,TCP/IP协议栈在Linux内核中的运行时序分析

可选题目三:TCP/IP协议栈在Linux内核中的运行时序分析在深入理解Linux内核任务调度(中断处理、softirg、tasklet、wq、内核线程等)机制的基础上,分析梳理send和recv过程中TCP/IP协议栈相关的运行任务实体及相互协作的时序分析。编译、部署、运行、测评、…

vs2019Linux守护,Visual Studio 2019将支援Ninja显着提升Linux专案建置效率

微软更新Visual Studio 2019,新增多个可提升Linux开发体验的功能,包括在Linux上支援建置系统Ninja,以及更完整地支援gdbserver,而且现在开发者也可以使用连接管理器(Connection Manager),编辑和配置预设的远端连接。使…

三个数比较大小函数调用c语言,C语言函数的调用——比较两个数的大小

**目录**一、先写好框架二、然后定义我们需要的变量三、这里就要写函数的部分四、函数部分写完了,但是还一个地方,要值得注意一、常规方法比较大小二、指针操作比较大小--------------------今天我们要写的是用**调用函数**的方法来 比较两个数字的大小我…

c语言爱心代码空心,c语言心形图案代码,是什么?

#include int main(){int i,j;printf(" ****** ******\n"" ********** **********\n"" ************* *************\n");//前三排的规律性不强 所以直接显示就好了for(i0;i<3;i)//显示中间三排{for(j0;j<29;j)printf(&quo…

c语言程序中必不可少的,C语言程序设计(第3章程序控制语句)2

3.2 数据的输入与输出在程序的运行过程中&#xff0c;往往需要由用户输入一些数据&#xff0c;而程序运算所得到的计算结果等又需要输出给用户&#xff0c;由此实现人与计算机之间的交互&#xff0c;所以在程序设计中&#xff0c;输入输出语句是一类必不可少的重要语句&#xf…

快速排序c语言实现,快速排序的C语言代码实现

快速排序实质上是对“冒泡排序”的一种改进&#xff0c;整个排序过程可概括为&#xff1a;通过N趟的排序将原本的排序数据分为若干块进行分块排序&#xff0c;而在每趟排序过程中&#xff0c;以指定的关键字将待排数据分别分为比关键字大的部分和比关键字小的部分&#xff0c;反…

android 九宫格封装,Android 九宫格布局

演示image需求满足0-9个图的适配图数量演示1image2image3image4image5image6image7image8image9image使用手动设置android:layout_width"match_parent"android:layout_height"wrap_content"app:ngl_gridSpace"10dp"app:ngl_oneChildHeight"…

android监听应用服务,Android应用中Back键的监听及处理实例

MainActivity如下:复制代码 代码如下:package cn.testnbackpressed;import android.os.Bundle;import android.view.KeyEvent;import android.app.Activity;/*** Demo描述:* 处理Back键按下事件** 注意事项:* 以下两种方法勿一起使用*/public class MainActivity extends Activ…

android放大镜无广告,Android放大镜的实现代码

快三个月了没写博客了&#xff0c;因为工作调动&#xff0c;很多经验、心得都没有时间记录下来。现在时间稍微充裕了点&#xff0c;我会尽量抽时间将之前想写而没写的东西补上。进入正题。去年某个时候&#xff0c;我偶然看到一篇文章&#xff0c;讲android里面放大镜的实现。文…

android获取3g或wifi流量信息,Android代碼----android獲取3G或wifi流量信息

Android代碼----android獲取3G或wifi流量信息日期&#xff1a;2017/2/23 18:01:39 &nbsp 編輯&#xff1a;關於Android編程android獲取3G或wifi流量信息&#xff1a;[java]IBatteryStats battryStats IBatteryStats.Stub.asInterface(ServiceManager.getService("…

如何在android进行ltp测试,Android系统完整性度量架构IMA-EVM

错误2&#xff1a;/bin/bash:m4: command not found解决 &#xff1a;sudo apt-get install m4错误3&#xff1a;prebuilts/misc/linux-x86/bison/bison:No such file or directory原因 &#xff1a;ubuntu64位系统运行32位程序的问题&#xff0c;需要安装运行32位程序的兼容…

android 如何 root权限获取,如何获取android手机root权限获取

安卓手机的卡与不卡&#xff0c;和是否root无关。安卓的卡&#xff0c;是其开发时就注定的&#xff0c;其原因如下&#xff1a;1.内存小/少手机内存在手机出厂的时候就已经固定了&#xff0c;其总量无法调整&#xff0c;不能像电脑一样加内存条。所以想提升可用内存&#xff0c…

日语输入法 android8.0,讯飞输入法发布 AndroidV8.0.6855 专注提升输入效率

作为最懂用户的讯飞输入法&#xff0c;近日发布全新 Android V8.0.6855 版本&#xff0c;坚持以用户体验为基础&#xff0c;不断优化产品性能&#xff0c;提升用户体验。本次新版更加专注于输入效率&#xff0c;带来了 BiuBiu 键盘、离线语音等多个输入功能的提升。BiuBiu 键盘…

imx6 android快速启动,freescale imx6 开机启动速度优化之Bootchart工具的使用问题

之前有安装bootchart&#xff0c;先执行以下命令&#xff0c;卸载掉bootchart工具sudo apt-get autoremove bootchartbootchart安装1、安装$sudo apt-get install bootchart$sudo apt-get install pybootchartgui2、编写android 上log文件的打包和自动生成bootchart.png的脚本文…

鸿蒙和宙斯谁厉害,漫威宇宙宙斯vs奥丁,到底谁更强

宙斯在漫威里&#xff0c;是希腊神话中的众神之王&#xff0c;奥林匹斯十二主神之一&#xff0c;也是奥林匹斯大部分神和神奇女侠戴安娜的父亲&#xff0c;同时也是沙赞的力量来源之一能力&#xff1a;不朽(只有宙斯的血能杀死宙斯)宙斯神力雷霆之怒控制天气宙斯的力量并不是某…

html 输入框 相加,JS中,如何实现两个输入框中内容的数字相加?

事件function count(){var adocument.getElementById("txt1").value;var bdocument.getElementById("txt2").value;var fdocument.getElementById("select").value;switch(f){case :document.getElementById("fruit").valueab;break;c…

多层html怎么找到密码输入框,Vant PasswordInput 密码输入框

介绍带网格的输入框组件&#xff0c;可以用于输入支付密码、短信验证码等&#xff0c;通常与数字键盘组件配合使用引入import Vue from vue;import { PasswordInput, NumberKeyboard } from vant;Vue.use(PasswordInput);Vue.use(NumberKeyboard);代码演示基础用法:value"…