登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> CLQ工作室开源代码 >> 主题: vscode 中如何实现使用 gcc g++ 分别编译不同的文件     [回主站]     [分站链接]
标题
vscode 中如何实现使用 gcc g++ 分别编译不同的文件
clq
浏览(508) + 2021-10-08 16:27:35 发表 编辑

关键字:

[2021-10-08 16:29:56 最后更新]
vscode 中如何实现使用 gcc g++ 分别编译不同的文件

太麻烦,最终我还是用了 g++ 编译全部的文件。不过还是记录一下实现方法备用。

关键点:
1."dependsOn" 中指定子任务;
2.vscode 目前只认 task.json ,是不会遍历目录去找所有的 json 的内容的。

----------------------------------------------------------------
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "task g++",    //修改此项
            "command": "D:\\gcc\\mingw64_seh\\bin\\g++.exe", //"D:\\C-Free5\\mingw\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "D:\\gcc\\mingw64_seh\\bin", //"D:\\C-Free5\\mingw\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }

        //----------------------------------------------------------------
        ,
        {
            "type": "shell",
            "label": "task g++ main.c",    //修改此项
            "command": "D:\\gcc\\mingw64_seh\\bin\\g++.exe",  //g++ 的话会把 .c 也当做 c++ 源码来编译
            //"command": "D:\\gcc\\mingw64_seh\\bin\\gcc.exe", //"D:\\C-Free5\\mingw\\bin\\g++.exe",
            "args": [
                "-g",
                "-lgdi32",
                //"-lgdi",  //这个是不存在的
                "-lwinmm",
                "-mwindows",  //目前 hbrush 需要
                "-luser32",  //可以不用默认应该有
                "-lstdc++", //据说会让 gcc  支持 c++ 其实目前的版本无用
                //"-lc++ ",
                "${fileDirname}\\lua\\libs_lua.c",
                "${fileDirname}\\libs.c",
                //"${fileDirname}\\libs.o",
                //"${fileDirname}\\ndk_cpp\\cpp_hashmap_old.cpp",  //这个应该是 cfree5 才用的
                //"${fileDirname}\\ndk_cpp\\cpp_hashmap.cpp", //mingw64 也不支持
                "${fileDirname}\\ndk_cpp\\cpp_hashmap_mingw64.cpp",
                //"${fileDirname}\\ndk_cpp\\cpp_hashmap_mingw64.o",  //用后面的 ["g++ libs"] 编译出来
                "${fileDirname}\\main.c",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "D:\\gcc\\mingw64_seh\\bin", //"D:\\C-Free5\\mingw\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            //"dependsOn":["g++ libs", "gcc libs"]  //要和后面的一致,会先编译它 //参考 https://www.jianshu.com/p/d776379900e5 //可以实现,用 gcc 和 g++ 分别编译不同的文件,不过太麻烦了,还是直接用 g++ 好了,还能检测一下类型
        },

        //----------------------------------------------------------------
        {
            "type": "shell",
            "label": "g++ libs",    //修改此项 //需要用到 g++ 的,放这里来
            "command": "D:\\gcc\\mingw64_seh\\bin\\g++.exe",  //g++ 的话会把 .c 也当做 c++ 源码来编译
            //"command": "D:\\gcc\\mingw64_seh\\bin\\gcc.exe", //"D:\\C-Free5\\mingw\\bin\\g++.exe",
            "args": [
                "-g",
                "-c",
                "-lgdi32",
                //"-lgdi",  //这个是不存在的
                "-lwinmm",
                "-mwindows",  //目前 hbrush 需要
                "-luser32",  //可以不用默认应该有
                "-lstdc++", //据说会让 gcc  支持 c++ 其实目前的版本无用
                //"-lc++ ",
                //"${fileDirname}\\lua\\libs_lua.c",
                //"${fileDirname}\\libs.c",
                //"${fileDirname}\\ndk_cpp\\cpp_hashmap_old.cpp",  //这个应该是 cfree5 才用的
                //"${fileDirname}\\ndk_cpp\\cpp_hashmap.cpp", //mingw64 也不支持
                "${fileDirname}\\ndk_cpp\\cpp_hashmap_mingw64.cpp",
                //"${fileDirname}\\main.c",
                "-o",
                //"${fileDirname}\\${fileBasenameNoExtension}.exe"
                "${fileDirname}\\ndk_cpp\\cpp_hashmap_mingw64.o"
            ],
            "options": {
                "cwd": "D:\\gcc\\mingw64_seh\\bin", //"D:\\C-Free5\\mingw\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }

        //----------------------------------------------------------------
        ,
        {
            "type": "shell",
            "label": "gcc libs",    //修改此项
            //"command": "D:\\gcc\\mingw64_seh\\bin\\g++.exe",  //g++ 的话会把 .c 也当做 c++ 源码来编译
            "command": "D:\\gcc\\mingw64_seh\\bin\\gcc.exe", //"D:\\C-Free5\\mingw\\bin\\g++.exe",
            "args": [
                "-g",
                "-c",
                "-lgdi32",
                //"-lgdi",  //这个是不存在的
                "-lwinmm",
                "-mwindows",  //目前 hbrush 需要
                "-luser32",  //可以不用默认应该有
                "-lstdc++", //据说会让 gcc  支持 c++ 其实目前的版本无用
                //"-lc++ ",
                //"${fileDirname}\\lua\\libs_lua.c",
                "${fileDirname}\\libs.c",
                //"${fileDirname}\\ndk_cpp\\cpp_hashmap_old.cpp",  //这个应该是 cfree5 才用的
                //"${fileDirname}\\ndk_cpp\\cpp_hashmap.cpp", //mingw64 也不支持
                //"${fileDirname}\\ndk_cpp\\cpp_hashmap_mingw64.cpp",
                //"${fileDirname}\\ndk_cpp\\cpp_hashmap_mingw64.o",  //用后面的 ["g++ libs"] 编译出来
                //"${fileDirname}\\main.c",
                "-o",
                "${fileDirname}\\libs.o"
            ],
            "options": {
                "cwd": "D:\\gcc\\mingw64_seh\\bin", //"D:\\C-Free5\\mingw\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }

        //----------------------------------------------------------------

    ]
}


clq
2021-10-08 16:29:56 发表 编辑

https://www.jianshu.com/p/d776379900e5

----------------------------------------------------------------
VS Code中执行多个task
汶水一方
2019.06.28 05:54:42

方法一

把第2个任务设置成第1个任务的dependsOn,就可以在运行第1个任务时,自动先把第2个任务执行了。
image.png

方法二

2个方法保持原样(都不用加dependsOn),在后面(必须是后面)加一个新的task,内容如下:

{
    "label": "Build Both",
    "dependsOn": ["Sender Build", "Receiver Build"],
    "group": {
        "kind": "build",
        "isDefault": true
    }
}

这样在执行这个新的tasks时,会自动执行前面2个任务。
这个方法有个缺点,每执行一个任务,需要按一下ENTER。
完整的tasks.json如下。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Sender Build",
            "type": "shell",
            "command": "clang++",
            "args": [
                "-std=c++17",
                "-stdlib=libc++",
                "tcp-sender.cpp",
                "-o",
                "tcp-sender.bin",
                "--debug"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "Receiver Build",
            "type": "shell",
            "command": "clang++",
            "args": [
                "-std=c++17",
                "-stdlib=libc++",
                "tcp-receiver.cpp",
                "-o",
                "tcp-receiver.bin",
                "--debug"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "Build Both",
            "dependsOn": ["Sender Build", "Receiver Build"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录
vscode 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1