关于Vscode中C++的json配置文件解读

g++ 、gcc能在本地终端中运行一个c/cpp文件

终端尝试
gcc -v
g++ -v

如果有关于版本信息,则含有编译器。

g++  mian.cpp -o main.exe && main
-o 后接产生exe的文件名,exe可以省略
&& 后接产生的exe文件,exe可以省略
实际上这是两个命令,因为exe文件的执行直接命令行输入文件名即可。

        查看gcc,g++版本

        

 gcc运行c程序

g++运行cpp程序

如果终端能运行,而vscode中运行不了大概率就是编译命令的问题了

打开设置

进入settings.json全局文件

 

修改运行命令 

 

如果这步之后能成功运行,下面的都可以不用看了,下面是针对当前文件夹下的局部设置!!!

设置.vscode文件夹下settings.json文件

        其实最终要的是code-runner.executorMap,因为它设置你的命令行是怎么样的,换言之,变成通用的产生exe文件并运行的指令。

        如果在终端能够运行,那么将原来的命令改为我下面的,也应该是能够的。

        其次想深入探究的话,看看每一个后面的注释吧。

{
    "files.defaultLanguage": "cpp", // ctrl+N新建文件后默认的语言
    "editor.formatOnType": true, // 输入时就进行格式化,默认触发字符较少,分号可以触发
    "editor.snippetSuggestions": "top", // snippets代码优先显示补全
​
    "code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入
    "code-runner.executorMap": {
        "c": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe  && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe  && $dir$fileNameWithoutExt"
    }, // 设置code runner的命令行
    "code-runner.saveFileBeforeRun": true, // run code前保存
    "code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false
    "code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息
​
}

c_cpp_properties.json - 编译环境相关的设置

  该文件用于指定一般的编译环境,包括头文件路径,编译器的路径等。通过 Ctrl + Shift + p 打开命令行,键入关键字 "C++",在下拉菜单中选择 "C/C++ Edit configuration",系统即自动在 .vscode 目录下创建 c_cpp_properties.json 文件,供用户进行编译方面的环境配置。

  • compilerPath要精确到: gcc.exe

  • Cmd获取includePath: gcc -v -E -x c++ - (作用:防止include报错:file not found)

  • includePath每项前后都要有: " " ,每项之间都要有: ,

  • 实在找不到路径,下载个everything软件,找找路径在哪

{
    "configurations": [
        {
            "name": "Win32",  //环境名
            "includePath": [
                "${workspaceFolder}/**", //指定头文件路径,这里指定的是当前工作目录,如有需要在后面添加,添加方式是加入 "/to/path" 格式的路径
                "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include\\c++",
                "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include",
                "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include\\c++\\x86_64-w64-mingw32",
                "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include\\c++\\backward",
                "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include-fixed",
                "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\..\\..\\..\\..\\x86_64-w64-mingw32\\include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:\\Program Files (x86)\\mingw64\\bin\\gcc.exe",  //编译器的路径,可根据自己的安装情况进行设置
            "cStandard": "gnu17",
            "cppStandard": "gnu++14",  //设置使用的 C/C++ 标准
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

tasks.json

        该文件用于指定程序的编译规则,即如何将源文件编译为可执行程序。通过 Ctrl + Shift + p 打开命令行,键入关键字 "task",并在下拉菜单中选择 Tasks: Configure Default Build Task -> Create tassk.json file from template -> Others ,系统即自动在 .vscode 目录下创建 task.json 文件( 基础模版 ),供用户设置具体的编译规则。

  注意此时仅生成了一个 task.json 的简化模板,修改该文件中 label 键的值,再打开命令行,选择 Tasks:Configure Default Build Task 选项,此时修改后的 label 名字会出现在选项栏中,此时选中该 label的名字,则对应的 task.json 文件会发生改变,并被设置为默认编译对象( 即执行命令 Tasks: Run Build Tasks 时默认执行的是该 task.json 文件对应的编译 ),其大致格式如下所示。用户需要根据实际情况对其中的键值进行修改。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Compile", // 任务名称,与launch.json的preLaunchTask相对应
            "command": "clang++", // 要使用的编译器
            "args": [
                "${file}",
                "-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
                "${fileDirname}/${fileBasenameNoExtension}.exe",
                "-g", // 生成和调试有关的信息
                "-Wall", // 开启额外警告
                "-static-libgcc", // 静态链接
                "-fcolor-diagnostics", // 彩色的错误信息?但貌似clang默认开启而gcc不接受此参数
                "--target=x86_64-w64-mingw", // clang的默认target为msvc,不加这一条就会找不到头文件;Linux下去掉这一条
                "-std=c++17" // C语言最新标准为c11,或根据自己的需要进行修改
            ], // 编译命令参数
            "type": "shell", // 可以为shell或process,前者相当于先打开shell再输入命令,后者是直接运行命令
            "group": {
                "kind": "build",
                "isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件,我这里不多提
            },
            "presentation": {
                "echo": true,
                "reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never。具体参见VSC的文档
                "focus": false, // 设为true后可以使执行task时焦点聚集在终端,但对编译c和c++来说,设为true没有意义
                "panel": "shared" // 不同的文件的编译信息共享一个终端面板
            }
            // "problemMatcher":"$gcc" // 如果你不使用clang,去掉前面的注释符,并在上一条之后加个逗号。照着我的教程做的不需要改(也可以把这行删去)
        }
    ]
}

精简自己的如下:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "build",
            "command": "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "编译器: \"C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\bin\\g++.exe\""
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "C:/Program Files (x86)/Dev-Cpp/MinGW64/bin/g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:/Program Files (x86)/Dev-Cpp/MinGW64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ]
}

launch.json

        该文件主要与程序的调试相关。用户可通过 Ctrl+Shift+p 打开命令行,键入关键字 "launch",选择 "Debug:Open launch.json" -> "C++(GDB/LLDB)",即可打开调试的配置文件 launch.json。该文件设置 VScode 在调试时的基本内容和要求.在配置好 launch.json 文件后, 按 F5 即可进入调试模式。launch.json 文件的基本选项如下所示。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg", // 配置类型,这里只能为cppdbg
            "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
            "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
            "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,我一般设置为true
            "cwd": "${workspaceFolder}", // 调试程序时的工作目录
            "environment": [], // (环境变量?)
            "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
            "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
            "MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。
            "miDebuggerPath": "gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则去掉
            "setupCommands": [ // 用处未知,模板如此
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
        }
    ]
}

精简自己的如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch", // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg", // 配置类型,这里只能为cppdbg
            "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
            "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
            "stopAtEntry": true, // 设为true时程序将暂停在程序入口处,我一般设置为true
            "cwd": "${workspaceFolder}", // 调试程序时的工作目录
            "environment": [], // (环境变量?)
            "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
            "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
            "MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。
            "miDebuggerPath": "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\bin\\gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则去掉
            "setupCommands": [ // 用处未知,模板如此
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "build" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
        }
    ]
}

成功演示

  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VSCode配置C/C++环境需要创建四个JSON文件,分别是c_cpp_properties.json、launch.json、settings.json和tasks.json。下面是对这四个文件的简要介绍: 1. c_cpp_properties.json:用于配置C/C++的编译器路径、头文件路径和库文件路径等信息。可以通过以下步骤创建: a. 打开VSCode,进入工作区(或文件夹)。 b. 在左侧的资源管理器,右键单击文件夹,选择“添加文件夹到工作区”。 c. 在文件夹创建一个名为“.vscode”的文件夹。 d. 在“.vscode”文件夹创建一个名为“c_cpp_properties.json”的文件。 e. 在“c_cpp_properties.json”文件添加以下内容: ```json { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "compilerPath": "C:/TDM-GCC-64/bin/gcc.exe", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "gcc-x64" } ], "version": 4 } ``` 2. launch.json:用于配置调试器的启动方式和参数等信息。可以通过以下步骤创建: a. 在“.vscode”文件夹创建一个名为“launch.json”的文件。 b. 在“launch.json”文件添加以下内容: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/a.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "C:/MinGW/bin/gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] } ``` 3. settings.json:用于配置VSCode的全局设置。可以通过以下步骤创建: a. 在“.vscode”文件夹创建一个名为“settings.json”的文件。 b. 在“settings.json”文件添加以下内容: ```json { "files.associations": { "*.c": "c", "*.h": "c" } } ``` 4. tasks.json:用于配置编译器的编译命令和参数等信息。可以通过以下步骤创建: a. 在“.vscode”文件夹创建一个名为“tasks.json”的文件。 b. 在“tasks.json”文件添加以下内容: ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "gcc", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true } } ] } ``` 以上是VSCode配置C/C++环境四个JSON文件的简要介绍。如果需要更详细的配置信息,可以参考VSCode官方文档或者其他相关教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值