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