• VSCode编译运行C代码


    一、通用准备

    1. 安装VScode
    2. 安装C/C++扩展(Ctrl+Shift+X)
    3. 如果要用中文可以下载Chinese插件

    二、Ubuntu安装VScode

    1. 终端用下面命令确定gcc已经安装并配置gdb
    //确认gcc已经安装
    gcc -v
    sudo apt-get update
    //配置gdb
    sudo apt-get install build-essential gdb
    
    • 1
    • 2
    • 3
    • 4
    • 5

    其次从官网把VS的安装包下载下来
    2. 安装
    sudo dpkg -i code_1.37.0-1565227985_amd64.deb

    1. 卸载
      dpkg -r 不删除配置文件的卸载方式

    dpkg -P 删除配置文件的卸载方式

    1. 使用umake来安装卸载VScode
    //安装
    sudo umake ide visual-studio-code
    //针对闪退问题,打开无反应等问题
    cd ~/.config 
    sudo rm -rf ./Code/ 
    //安装插件时,发现点击“install”,右下角会提示“failed to install”,这是因为vscode的扩展文件夹没有用户权限,命令行中添加如下代码即可:
    sudo chown -R 你的用户名 ~/.vscode/extensions
    //卸载软件
    umake ide visual-studio-code --remove
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    三、Ubuntu卸载VScode的方法

    Ubuntu不像Windows可以直接在控制面版中卸载软,因为都是文件组织的。
    所以在删除时需要将对应文件删除。首先找到所有文件夹,再分别删除

    1. 查看该软件的安装位置:
    //-iname将不区分大小写进行查找
    sudo find . -iname "*clion*"
    //或者
    whereis clion
    
    • 1
    • 2
    • 3
    • 4
    1. 卸载vscode的方法有很多,选其中之一即可。具体如下:

    (1) 通过 apt-get 方式安装的,删除时会提示确认:

    $  sudo apt-get remove code           # 只是卸载,保留配置
    或
    $  sudo apt-get --purge remove code   # 彻底清除,包括配置
    或
    $  sudo apt-get purge  code           # 也是彻底清除
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (2) 通过 dpkg 方式安装的,删除时将没有确认提示:

    $  sudo dpkg -r code                  # 只是卸载,保留配置
    或
    $  sudo dpkg --remove  code           # 只是卸载,保留配置
    或
    $  sudo dpkg -p code                  # 彻底清除,包括配置
    或
    $  sudo dpkg --purge  code            # 彻底清除,包括配置
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 删除〜/中的缓存。使用命令:
    sudo rm -rf ~/.Clion*
    
    • 1

    四、Ubuntu配置VScode运行C代码

    1. 创建cpp工程
    mkdir cppCode
    cd cppCode
    code .
    
    • 1
    • 2
    • 3
    1. CMake工具扩展可以为基本CMake项目创建文件。打开命令选项板(Ctrl+Shift+P)并运行CMake:Quick Start命令
      运行过程会让你输入工程名称

    2. 选择Executable作为项目类型,以创建包含基本main()函数的基本源文件(main.cpp)。
      如果您想创建一个基本的源文件和头文件,您应该选择Library。

    3. 打开命令选项板(Ctrl+Shift+P)并运行CMake:选择工具包。扩展将自动扫描计算机上的工具包,并创建在系统上找到的编译器列表。

    cmake:select a kit

    1. 配置CMake项目
    • 打开命令选项板(Ctrl+Shift+P)并运行CMake:edit User Local CMake Kits命令,编辑cmake-tools-kits.json文件
    
    
    • 1
    • 配置构建任务
      快捷键shift+ctrl+p搜索全局命令tasks,选择g++ build active file生成配置
    //tasks.json
    {
      "version": "2.0.0",
      "tasks": [
        {
          "type": "shell",
          "label": "C/C++: g++ build active file",
          "command": "/usr/bin/g++",
          "args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
          "options": {
            "cwd": "/usr/bin"
          },
          "problemMatcher": ["$gcc"],
          "group": {
            "kind": "build",
            "isDefault": true
          },
          "detail": "Task generated by Debugger."
        }
      ]
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    command:设置制定要运行的程序,一般为g++
    args:用数组的形式,将指定的g++命令行参数传入,必须按照编译器顺序进行制定。本task文件的含义是
    label:任务列表中看到的名字,可以任意命名
    detail:将在任务列表中作为任务描述的值
    修改task.json文件主要修改args部分
    
    使用"${workspaceFolder}/*.cpp" 代替${file} ,这将编译文件夹中所有的CPP文件
    使用自定义的名字如helloworld.out代替"${fileDirname}/${fileBasenameNoExtension}" 
    ``
    
    - 配置调试设置
    create a launch.json file,任选一项环境生成launch.json
    ```cpp
    {
        // 使用 IntelliSense 了解相关属性。 
        // 悬停以查看现有属性的描述。
        // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "(gdb) 启动",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}/${fileBasenameNoExtension}.out",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${fileDirname}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "description": "为 gdb 启用整齐打印",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    },
                    {
                        "description":  "将反汇编风格设置为 Intel",
                        "text": "-gdb-set disassembly-flavor intel",
                        "ignoreFailures": true
                    }
                ]
            }
    
        ]
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 选择变体,请打开命令选项板(Ctrl+Shift+P)并运行CMake:select variant命令
      变体包含有关如何构建项目的说明。默认情况下,CMake工具扩展提供了四个变体,每个变体对应于默认的构建类型
      Debug、Release、MinRelSize和RelWithDebInfo
      选择“Debug”以将调试信息包括在生成中。

    • 打开命令调色板(Ctrl+Shift+P)并运行CMake:Configure命令来配置您的项目。这将使用您选择的工具包和变体在项目的生成文件夹中生成生成文件。

    • 编译项目
      打开命令选项板(Ctrl+Shift+P)并运行CMake:Build命令,或从状态栏中选择Build按钮
      通过从命令选项板中选择CMake:Set build Target,可以选择要生成的目标。默认情况下,CMake工具构建所有目标。所选目标将出现在Build按钮旁边的状态栏中。

    1. 代码运行快捷键
    运行代码:
    
    Alt+Ctrl+N或右键-Run Code
    
    调试代码
    F5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    其他说明

    1. 针对代码一闪而过的问题可以在代码最后加如下代码
    system("pause");
    
    • 1
    1. 代码中使用scanf函数,在vscode中无法显示,这是因为没有打开控制台,解决办法:
    1.在vscode中点击文件;
    2.点击首选项,点击设置;
    3.搜索关键词code-runner.runInTerminal,勾选此选项即可。
    
    • 1
    • 2
    • 3
    
    
    • 1

    参考
    ubuntu 上vscode使用cmake编译运行c++程序


    windows上使用vscode编译C代码主要两个方法,第一个是安装MinGW-w64,其次是使用windows上的linux来编译运行C代码

    五、windows使用VScode

    1. windwos需要下载MinGW-w64
      MinGW-w64官网下载地址
      https://sourceforge.net/projects/mingw-w64/files/
      请添加图片描述

    2. 解压并配置环境变量
      请添加图片描述
      在环境变量里配置好MinGW的路径,比如:D:\CodeConfig\mingw64\bin
      然后如下图配置好对应的json文件:
      请添加图片描述

    输入下面命令判断是否成功

    gcc -v
    
    • 1

    文件配置
    tasks.json (制作说明)

    {
      // 使用 IntelliSense 了解相关属性。 
      // 悬停以查看现有属性的描述。
      // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [
    
          {
              "name": "(gdb)c_launch",
              "type": "cppdbg",
              "request": "launch",
              "targetArchitecture": "x64",
              "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
              //替换电脑中的路径
              "miDebuggerPath": "D:/Software/mingw64/bin/gdb.exe",
              "MIMode": "gdb",
              "args": [],
              "stopAtEntry": false,
              "cwd": "${workspaceRoot}",
              "environment": [],
              "internalConsoleOptions": "openOnFirstSessionStart",
              "externalConsole": true,
              "preLaunchTask": "gcc"
          }
      ]
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    launch.json (调试器设置)

    {
      // See https://go.microsoft.com/fwlink/?LinkId=733558
      // for the documentation about the tasks.json format
      "version": "2.0.0",
      "command": "gcc",
      "args": ["-Wall", "-g", "${file}", "-o", "${fileBasenameNoExtension}.exe"],
      "echoCommand": true,
      "problemMatcher": {
          "owner": "cpp",
          "fileLocation": ["relative", "${workspaceFolder}"],
          "pattern": {
              "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
              "file": 1,
              "line": 2,
              "column": 3,
              "severity": 4,
              "message": 5
          }
      }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    //launch.json
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示
                "type": "cppdbg", // 配置类型,这里只能为cppdbg
                "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
                "targetArchitecture": "x86", // 生成目标架构,一般为x86或x64,可以为x86, arm, arm64, mips, x64, amd64, x86_64
                "program": "${file}.exe", // 将要进行调试的程序的路径
                "miDebuggerPath": "c:\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
                "args": [
                    "blackkitty",
                    "1221",
                    "# #"
                ], // 程序调试时传递给程序的命令行参数,一般设为空即可
                "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
                "cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
                "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
                "preLaunchTask": "g++" // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    参考
    用VScode来编写C / C ++代码

    六、Windows使用wsl来运行C程序

    Windows Subsystem for Linux,是一个 windows 下的 Linux 子系统

    1. 确定下面的配件已经安装
    2. 安装C/C++插件
    3. C++ Intellisense
    利用Intellisense 代码完成、 linting、调试支持、代码片段和单元测试等 VS Code 功能
    4. code runner
    5. Remote - WSL (使用windows的wsl进行编译时需要安装该软件)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. windows的配置如下,其实与纯Ubuntu的使用方式差不多
    1. 首先需要在Windows下配置好对应的Linux版本,如Ubuntu,此处不做详述
    在Ubuntu环境下就是通过执行sudo apt-get update,更新一下包管理器,然后更新一些软件
    apt update:只检查,不更新(已安装的软件包是否有可用的更新,给出汇总报告)
    用法:sudo apt update
    apt upgrade:更新已安装的软件包
    用法:sudo apt upgrade 软件包名
    2. 然后安装gdb,gcc和g++
    sudo apt install build-essential
    sudo apt install gdb
    
    3. 在WSL中的命令行并输入以下命令:code .(中间有空格),此步会自动布置WSL中的VSCode环境,
    等待片刻之后会在Windows中弹出一个VS Code窗口。在此之后也可以通过VS Code左下角的连接选项
    直接连接WSL。
    
    4. 使用wsl编译运行的话,一般把源码存储在wsl的分区中,这样自动配置的json文件才能找到wsl
    中安装的gcc和g++,如果是windows下某个硬盘的源代码则需要重新打开窗口,选择模式如下方可使用wsl的环境:
    Remote-WSL:Reopen Folder in WSL
    
    5. 创建一个文件夹,里面创建一个C/CPP文件,之后再上面的文件夹下面就能看到下面三个配置json文件(第一个似乎在新版上没看到)
    c_cpp_properties.json (编译器路径和IntelliSense设置)
    
    tasks.json (制作说明)
    选择Terminal -> Configure Default Build Task -> g++ build active file会生成一个.vscode/tasks.json的配置文件
    点击左侧调试按钮可以生成该文件,
    targetArchitecture根据自己所需的构架来更改,miDebuggerPath需要按照自己电脑中Mingw-w64的安装目录来更改。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    1. launch.json配置 (调试器设置)
      选择Debug -> Add Configuration -> C++(GDB / LLDB)会生成一个.vscode/launch.json配置文件
      快捷键ctrl+shift+p会出现状态栏提示,输入tasks,选择用模板生成文件,然后替换就可以
      在Remote-WSL:Reopen Folder in WSL模式下,需要保证你本地磁盘如D盘上源码的json文件用的是gcc而非MinGW的gcc.exe的路径,方可正常运行
    {
        // 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": "g++ - Build and debug active file",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}/${fileBasenameNoExtension}",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "C/C++: g++ build active file",
                "miDebuggerPath": "/usr/bin/gdb"
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    关于上面配置的部分讲解

    1. 按F5运行,会弹出配置C/C++,选择g++ - Build and debug active file
      然后就能够运行了

    在WSL中完成工作后,可以使用主文件菜单和命令面板(Ctrl + Shift + P)中的“ 关闭远程连接”命令来关闭远程会话。这将重新启动在本地运行的VS Code。


    VS快捷键等

    一、Visual studio Code 跳转定义返回快捷键

    F5: 调试程序
    CTRL+F5:运行程序
    windows + shift + p 切换屏幕
    Ctrl+shift+P,打开相应的json文件
    
    ctrl + P    查找文件
    Ctrl + shift + P 显示所有命令
    Ctrl + O    打开文件
    Ctrl + K Ctrl + O   打开文件夹
    Ctrl + R    打开最近的文件
    
    Windows
    Alt + ← Navigate back
    Alt + → Navigate forward
    Mac
    Ctrl + - Navigate back
    Ctrl + Shift + - Navigate forward
    
    Ubuntu
    Ctrl + Alt + - Navigate back
    Ctrl + Shift + - Navigate forward
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    二、VScode插件命令

    1. plantuml
      Alt+D开启预览,开启预览之后,可以实时查看到脚本的输出图

    2. ConEmu终端
      ConEmu是一款windows平台下的控制台工具,功能超级强大,类似于mac平台下的iTerm2

    三、程序中添加外部动态链接库so

    在task.json中添加-L和-l

    1. -l代表所连接的so文件的名字,因为我这里用的是libcalculate.so,连接的时候需要去掉lib和.so。
    2. -L是代表so文件所在的位置
      如在进行多线程代码编译时,在args中添加对应的-l参数来链接多线程库
    "tasks": [
            {
                "type": "cppbuild",
                "label": "C/C++: g++ build active file",
                "command": "/usr/bin/g++",
                "args": [
                    "-g",
                    "${file}",
                    "-lpthread",
                    "-o",
                    "${fileDirname}/${fileBasenameNoExtension}"
                ],
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    ps:关于Android Studio的使用

    1. 想要在Andorid Studio中实现跟VS一样侧边栏显示当前代码位置(快速定位)
      点击带圆圈的小叉叉按钮,就会定位到当前文件目录下了。
    2. 与VScode的git提交插件gitlens功能一样的插件,可以在每行代码后面显示最新提交信息的
      Git
      GitToolBox
  • 相关阅读:
    计算机网络和因特网
    R语言七天入门教程七:项目实战
    【Pytorch深度学习实战】(5)卷积神经网络(CNN)
    idea 找不到类 could not find artifact
    【多人在线游戏架构实战-基于C++的分布式游戏编程】开篇
    gitlab 设置 分支只读
    2022年物联网的5大趋势
    【第18章】MyBatis-Plus主键生成策略
    推荐系统实现原理介绍
    【CMU15-445 Part-8】Tree Indexes ii
  • 原文地址:https://blog.csdn.net/u011795345/article/details/127091056