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

Posted infoworld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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的版本安装两个扩展.

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

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

#include <iostream>

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/. 也可以从这里找速度快的镜像。

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

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

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文件.

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


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

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

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

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



    "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

以上是关于[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置]的主要内容,如果未能解决你的问题,请参考以下文章

史上最全VSCode插件,怪不得写代码头疼,VSCod安装与配置(适合小白)

linux 安装vscode

在 Visual Studio Code 中自定义语法突出显示

vscode初体验

vscod如何自定义 python虚拟环境

杂记2--ubuntu的vscod直接调试编写.cpp