zoukankan      html  css  js  c++  java
  • 配置vscode c/c++像sublime那样按Ctrl+shift+B编译直接运行

    需求:

    最近喜欢折腾各种编辑器。

    用了vscode官方的c/c++插件,配好launch.json和tasks.json之后用debug还是感觉很不错的。

    但是感觉对于acm有些用不上,反而不太灵敏,用起来也不太方便。

    就想配成像subliime自带的那样:

    1、编译之后直接运行

    2、可以把输出显示在下面这种

    过程:

    考虑到vscode默认ctrl+shift+B是build,只要在tasks.json里写"build"的task就行了,像这样

    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "0.1.0",
        "tasks": [
            {
                "taskName": "build",
                "command": "g++",
                
                "isShellCommand": true,
                "args": [
                    "-o",
                    "${workspaceRoot}/main",
                    "${workspaceRoot}/main.cpp"
                ],
                "showOutput": "always"
            }
        ]
    }

    我们就可以把运行的命令也写进去。

    但是尝试了许多办法,都不行,比如:

    1、args里后面加上“&&”和"${workspaceRoot}/main"

    2、tasks数组中写两个task字典,分别是不同的task,一个是build一个是run。后来看了看微软的文档,貌似只是定义不同的任务,我一开始还以为是顺序执行(也许是我没看完全吧)。

    这两个办法都不行,最后想了个办法,直接自定义一个新的bash命令,把编译和运行的命令全都写进去就行了。

    解决方法:

    1、新建一个文件,命名为gbr(g++ build and run,自己瞎起),随便放在哪,假设在~(家目录)

    touch gbr

    2、编辑这个文件,随便用什么编辑器gedit,vim,sublime,vscode无所谓,反正内容不多,gedit就够了。

    输入一下内容。

    g++ -o $1 $1.cpp
    $1

    $1表示外面传的参数

    比如说你要编译并运行的文件是~/main.cpp

    只要输入 gbr ~/main 就行了。

    3、把文件设置为可执行文件,我直接给了755权限。

    chmod 755 ~/gbr

    4、这个时候你在~目录下已经可以通过./gbr ~/main运行了,但是要让vscode能够使用这个命令,我们直接把这个文件移动到/usr/bin就行啦。

    sudo mv ~/gbr /usr/bin/gbr

    这时候在终端里就能用gbr ~/main 运行这条命令了。

    5、最后在vscode中修改tasks.json配置即可。

    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "0.1.0",
        "tasks": [
            {
                "taskName": "build",
                "echoCommand": true,
                "command": "gbr",
                "isShellCommand": true,
                "args": [
                    "${workspaceRoot}/main"
                ],
                "showOutput": "always"
            }
        ]
    }
    echoCommand参数是让命令在下面显示出来。

    这个方法只是我自己的一个小小探索,不过我想肯定有更加简便的方法,或许日后会发现。

    后续优化:

    1、编译c++14

    2、计算并输出程序运行时间。

    修改gbr文件即可:

    #!/bin/bash
    
    # get start time
    start=$(date +%s%N)
    start_ms=${start:0:16}
    
    # build
    g++ -o $1 $1.cpp -std=c++14
    
    # run
    $1
    
    # get end time
    end=$(date +%s%N)
    end_ms=${end:0:16}
    
    #output
    printf "[Finished in %.1fs]
    " $(echo "scale=1; ($end_ms - $start_ms)/1000000" | bc)
  • 相关阅读:
    Android Studio使用教程
    http://www.android-doc.com/#/295
    JDK,JRE,JVM区别与联系(ZZ)
    eclipse下载
    mac下android环境搭建笔记(android studio)
    android环境配置
    JDK、JRE、JVM三者间的关系
    实体类作用、封装与面向对象思想
    领域模型中的实体类分为四种类型:VO、DTO、DO、PO
    [架构设计] 组件和模块的区别
  • 原文地址:https://www.cnblogs.com/tak-fate/p/6411567.html
Copyright © 2011-2022 走看看