[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]

场景

1.Visual Studio Code发展到现在已经相当稳定了.已经不想1年前的那么卡和慢.目前它有可能成为通用语言开发利器。单就说支持C/C++的智能提醒, 函数跳转, 头文件跳转, 编辑器Debug就很省开发时间. 还有什么理由不用它呢?

2.Sublime Text现在功能更新的节奏也慢了下来, 也对,Sublime Text的小团队怎么能和大团队微软相比, 而且vscode还是免费的,功能还多,完善。

安装VSCode

点击下载安装 Visual Studio Code

说明

1.VSCode让我看到了用轻量级编辑器开发C/C++项目的希望.

C/C++ 开发编译调试

1.安装C/C++插件, 按Ctrl+Shift+P->Extensions:Intall Extensions,之后在左边搜索框输入C++,选择C/C++微软开发的版本和C++ Intellisenseaustin的版本安装两个扩展.

[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第1张图片

2.新建项目, vscode没有新建项目这一说,只需要把项目文件夹拖动到Explorer视图里就行了. 比如我这里把test-vscode2拖放进去。也可以通过菜单File->Open Folder...打开文件夹. 如果只是编译某个文件,其实连添加文件夹的步骤都不需要。最主要的是当前项目根目录下需要一个.vscode目录.

[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第2张图片

2.在这文件夹下新建一个文件test.cpp,当然你也可以直接在桌面右键某个cpp文件用vscode打开. 打开test.cpp,输入main根据智能提示选择main的代码片段. 之后随便添加点输出,如下:

#include 

int main(int argc, char const *argv[])
{
    std::cout << "hello world" << std::endl;
    return 0;
}

3.编辑完这个test.cpp文件时候, 注意当前编辑器要显示这个test.cpp文件,不是其他文件,接着按F5->选择C++ (GDB/LLDB),会生成一个调试运行配置文件launch.json,而且还有一个.vscode目录,这个.vscode就是项目配置目录,不可改名,不可删除.
单击编辑launch.json,修改program(编译后可执行文件路径)和miDebuggerPath(gdb程序路径)属性,完成后的看以下的json文件,关于属性的说明看launch.json里的微软超链接属性说明. 之后添加一个属性preLaunchTask来作为运行前的编译任务名build-cygwin,我这里用cygwin作为编译工具链, 也可以使用Mingw作为编译工具链.

launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {  
            "name": "(cygwin gdb) launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment":[],
            "externalConsole": false,
            "preLaunchTask": "build-cygwin",
            "MIMode": "gdb",
            "logging": {
                "moduleLoad": true,
                "trace": true
            },
            // "windows": {"options": {"env": {"path":"C:\\Windows;C:\\Windows\\System32;E:\\software\\cygwin64\\bin"}}},
            "miDebuggerPath": "E:\\software\\cygwin64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "asdfas",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ] 
        } 
    ]
}

4.关于安装Mingw作为g++编译器工具链,这里有说明配置Mingw. 也可以直接在这里下载MinGW. 这个没什么好说的,下载了安装包直接跟着下一步走就行了.

关于安装Cygwin的下载安装包. 这两个工具链难点就是在选择安装工具链下哪些工具,我安装Cygwin工具链下的这些工具,注意在小三角里选择最新的版本,之后不需要下载源代码(有需要可以下): 我推荐使用cygwin毕竟可以下载make等构件工具,mingw要另外找来下载.
注意: 安装cygwin时可能会提醒Cound not download mirror sites list. 之后下一步可以填入国内的镜像url会快很多,比如我用的是https://mirrors.ustc.edu.cn/cygwin/. 也可以从这里找速度快的镜像。
[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第3张图片

5.添加编译设置,点打开test.cpp文件为当前文件, 按F5,这时候会出现以下提醒:

[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第4张图片

点击Configure Task,选择C/C++: cl.exe build active file,会在.vscode下生成一个tasks.json文件:

[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第5张图片

6.tasks.json是执行编译或其他任务的配置文件,当按快捷键Ctrl+Shift+B就会出来任务名称, 选择其中的任务执行编译等操作. 我们把它改为Cygwinmingw的工具链配置. 同样在这里也是可以看配置属性说明. 我这里设置了两个编译器的配置,所以添加了两个任务. 注意这里有添加属性windows,是为了不在系统环境变量path添加g++.exe运行搜索路径,也可以在系统环境变量的path里添加这个工具链bin路径,不要两个工具链都添加到系统环境变量里,会冲突,如果只是在tasks.json里添加,不会污染系统环境,最大程度模拟了客户的环境,因为客户电脑并没有这两个工具链:

我这里在args参数里输出exe添加了一个build目录,所以需要在test-vscode2目录下新建一个build目录,作为输出目录. 需要自己添加, 不然会编译失败. 其中-std=c++11g++的编译参数,关于c++11我开了一个学院课程, 发布完后欢迎来学习C++11语言特性和标准库.

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "command": "g++",
    "tasks": [
        {
            "type": "shell",
            "label": "build-cygwin",
            "command": "E:\\software\\cygwin64\\bin\\g++.exe",
            "args": [
                "-std=c++11",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\build\\${fileBasenameNoExtension}.exe"
            ],
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "windows": {"options": {"env": {"path":"E:\\software\\cygwin64\\bin"}}}
            
        },
        {
            "type": "shell",
            "label": "build-mingw",
            "command": "E:\\software\\MinGW\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\build\\${fileBasenameNoExtension}.exe"
            ],
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "windows": {"options": {"env": {"path":"E:\\software\\MinGW\\bin"}}}
        }
    ]
}

7.编译文件,首先当前文件打开选择为test.cpp,接着按ctrl+shift+b选择build-cygwin,就是看到编译成功,在build目录下生成test.exe文件. 在下边的TERMINAL窗口能看到输出:

> Executing task: E:\software\cygwin64\bin\g++.exe -std=c++11 -g e:\Project\Sample\test-vscode2\test.cpp -o e:\Project\Sample\test-vscode2\build\test.exe <

8.运行调试exe文件, 注意因为launch.json并没有设置环境变量的属性,我们需要新增一个setting.json项目全局配置文件来添加cygwin的运行搜索目录.不然gdb会运行失败.

选择菜单File->Preferences->Setting,在搜索框里输入terminal.integrated.env.windows,选择Workspace,点击Edit in settings.json. 会生成一个空的setting.json文件.
[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第6张图片

完整配置,其实就是加了一个属性terminal.integrated.env.windows:

{
    "terminal.integrated.env.windows": {
        "path": "C:\\Windows;C:\\Windows\\System32;E:\\software\\cygwin64\\bin"
    }
}

接着打开test.cpp文件,按F5,会在右下角弹出,点击Allow.

[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第7张图片

之后还需要重新F5运行,运行成功后,可以在下边的窗口DEBUG CONSOLE里看到输出.

[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第8张图片

9.配置头文件跳转,智能提醒. 按ctrl+shift+p,选择->C/C++ Edit Configurations(UI).选择Win32->点击Add Configuration.会生成一个c_cpp_properties.json文件. 这个主要是配置头文件查找目录的, cygwin配置好的如下,配置好之后我们按住CTRL+点击test.cpp里的会打开相应的头文件.

[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第9张图片
[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]_第10张图片

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "E:\\software\\cygwin64\\usr\\include",
                "E:\\software\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\7.4.0\\include",
                "E:\\software\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\7.4.0\\c++",
                "E:\\software\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\7.4.0\\include\\c++\\x86_64-pc-cygwin"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "cStandard": "c11",
            "cppStandard": "c++11",
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "E:\\software\\cygwin64\\bin\\g++.exe"
        }
    ],
    "version": 4
}

注意: 增加compilerPath是为了让vscode支持用g++进行实时代码智能提醒(用编译的方式).

10.最后,直接编译运行F5。只是编译Ctrl+Shift+b->选择build-cygwin. 在DEBUG CONSOLE看运行输出, 在TERMINAL看编译输出.

11.至于多个文件的项目编译,只能通过makefile来配置编译,关于makefile的配置,可以看 通用Makefile配置编译选项. 更完整的通过分析头文件是否更新来编译查看从netbeans里提取的通用构建C++项目的Makefile文件.

参考

debugging-_launch-configurations

Create a build task

c-cpp-properties-schema-reference

你可能感兴趣的:(开发工具,学院-学习资料,vscode,c++,配置,调试,编译)