• ubuntu+VS code+launch.json+task.json


    1.ubuntu->vs code

    1.  通过官方PPA安装Ubuntu make
    
    sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
        sudo apt-get update
        sudo apt-get install ubuntu-make
    2. 使用命令安装visual studio code
    
    umake ide visual-studio-code

    3.使用文件安装:网站下载deb:https://code.visualstudio.com
    sudo dpkg -i code_1.38.1-1568209190_amd64.deb

    2.vs code配置

    tasks可以被用来做编译,而launch用来执行编译好的文件。

    2.1 launch.json——告诉VS Code如何执行启动任务

    // launch.json
    
    // https://code.visualstudio.com/Docs/editor/debugging#_launch-configurations// Available variables which can be used inside of strings.
    // ${workspaceRoot}: the root folder of the team        
    // ${file}: the current opened file                     
    // ${fileBasename}: the current opened file's basename 
    // ${fileDirname}: the current opened file's dirname    
    // ${fileExtname}: the current opened file's extension  
    // ${cwd}: the current working directory of the spawned process
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "(gdb) Launch", //这个应该是F1中出现的名字
                "preLaunchTask": "Build",  //在launch之前运行的任务名,这个名字一定要跟tasks.json中的任务名字大小写一致
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}/${fileBasenameNoExtension}.exe", //需要运行的是当前打开文件的目录中,名字和当前文件相同,但扩展名为exe的程序
                "args": [],
                "stopAtEntry": false, // 选为true则会在打开控制台后停滞,暂时不执行程序
                "cwd": "${workspaceFolder}", // 当前工作路径:当前文件所在的工作空间
                "environment": [],
                "externalConsole": true,  // 是否使用外部控制台,选false的话,我的vscode会出现错误
                "MIMode": "gdb",
                "miDebuggerPath": "c:/MinGW/bin/gdb.exe",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            }]
    }

    2.2 task.json——告诉launch或者编译器需要执行什么操作

    // tasks.json
    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "label": "Build",  // 任务的名字叫Build,注意是大小写区分的,等会在launch中调用这个名字
                "type": "shell",  // 任务执行的是shell命令,也可以是
                "command": "g++", // 命令是g++
                "args": [
                    "'-Wall'",
                    "'-std=c++17'",  //使用c++17标准编译
                    "'${file}'", //当前文件名
                    "-o", //对象名,不进行编译优化
                    "'${fileBasenameNoExtension}.exe'",  //当前文件名(去掉扩展名)
                ],
              // 所以以上部分,就是在shell中执行(假设文件名为filename.cpp)
              // g++ filename.cpp -o filename.exe
                "group": { 
                    "kind": "build",
                    "isDefault": true   
                    // 任务分组,因为是tasks而不是task,意味着可以连着执行很多任务
                    // 在build组的任务们,可以通过在Command Palette(F1) 输入run build task来运行
                    // 当然,如果任务分组是test,你就可以用run test task来运行 
                },
                "problemMatcher": [
                    "$gcc" // 使用gcc捕获错误
                ],
            }
        ]
    }

    3.gcc/g++

    GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。

    gcc是GCC中的GUN C Compiler(C 编译器)

    g++是GCC中的GUN C++ Compiler(C++编译器)

    3.1 写一个Main.cpp

    3.2 输入> g++ -g -c Main.cpp,文件空间下会出现 Main.o。-c只编译生成目标文件并没有形成可执行文件。(-g:添加gdb调试选项。)

    3.3输入 g++ -o Main.out Main.o ,文件空间下将会出现 Main.out(可执行文件)。 -o 编译加链接直接生成了可执行文件 .out

    所以上面的命令也可以简化为: g++ -o Main.out Main.cpp

    4.make/makefile/cmake/CMakeLists.txt

    • make工具通过调用makefile文件中的命令便可以对大型程序进行编译,而makefile文件中就包含了调用gcc去编译多个源文件的命令。
    • 通过cmake我们就可以快速创建出不同平台的makefile文件。如果程序是跨平台,换个平台makefile又要重新修改,这会很麻烦,所以就出现了cmake这个工具。

    为了编译一个大型程序,你首先编写CMakeLists.txt。然后,通过cmake命令就可以生成makefile文件。然后通过make命令就可以使用这个makefile文件,其调用gcc从而生成可执行文件。

    https://blog.csdn.net/lwwl12/article/details/78189382

    参考:https://www.jianshu.com/p/776a5fb57fbb

  • 相关阅读:
    Jzoj4889 最长公共回文子序列
    Jzoj4889 最长公共回文子序列
    Jzoj4888 最近公共祖先
    Jzoj4888 最近公共祖先
    Jzoj5441【NOIP2017提高A组冲刺11.1】序列
    Jzoj5441【NOIP2017提高A组冲刺11.1】序列
    hdu1269 迷宫城堡
    洛谷P1991 无线通讯网
    左神算法进阶班1_2判断两个树的结构是否相同
    判断两条链表是否相交(公共部分)并找出相交处
  • 原文地址:https://www.cnblogs.com/yrm1160029237/p/11688070.html
Copyright © 2020-2023  润新知