linux下,使用vscode开发c/c++

先安装编译工具。g++,build-essential。

错误实例 g++: error trying to exec ‘cc1plus’: execvp: 没有那个文件或目录,这时因为缺少g++,或者gcc和g++版本不一致。

sudo apt-get install build-essential
sudo apt-get install g++

vscode安装vscode-cpptools插件

它带了很多的功能,如clang格式化代码,利用gdb断点调试。如果提示miDebuggerPath没找到,则安装gdbsudo apt-get install gdb

makefile

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具。

实例如下:

build : 1.o
    g++ -o main 1.o
1.o : 1.cpp 
    g++ -g -c 1.cpp
clean :
    rm 1.o main



///launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/main", //make编译出的可执行文件
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "preLaunchTask": "build",
            "linux": {
                "MIMode": "gdb",
                "miDebuggerPath": "/usr/bin/gdb"
            },
            "osx": {
                "MIMode": "lldb"
            },
            "windows": {
                "MIMode": "gdb"
            }
        }
    ]
}
//tasks.json
{
    "version": "2.0.0",
    "command": "make",
    "showOutput": "always",
    "tasks": [
        {
            "taskName": "clean"
        },
        {
            "taskName": "build",
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation":  ["relative", "${workspaceRoot}"],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        }
    ]
}

有时还会提示这个错误No terminal is available to launch the debugger. Please install Gnome Terminal or XTerm没必要安装XTerm命令行,只需把自带的命令行软连接就行,sudo ln -s ./deepin-terminal xterm