VSCode 的第一个C++程序(windows)[更新2018.10.28]

所有的第一次都只是用来熟悉一下操作的,肯定是无法满足实际的需求的,所以进行了这次的更新。

更新内容:

  • 采用了makfile去编译生成中间文件和可执行文件;
  • 采用了多目录的文件树,将源文件、头文件、中间文件以及可执行文件分别存放在不同的目录中;
  • makefile文件支持跨平台(windows , linux),只需要修改一个参数就可以了,具体内容一看便知;
  • 支持多个源文件,毕竟实际工作学习中不会只创建 一个main.cpp吧;
  • vscode的C++项目的配置都跟着项目走,也就说只要其它平台和机器上的vscode的插件都有,其它必备的条件(windows:MingW, Linux: gcc,g++, gdb, cmake)都具备了,那么这个工程就可以在其它平台或机器上运行了。我们就不用费心费力的一个一个的修改添加配置文件了。

下面是项目模板的文件树:

│  .gitignore
│  makefile
│  README.md
│
├─.vscode
│      c_cpp_properties.json
│      launch.json
│      settings.json
│      tasks.json
│
├─Headers
│      .gitkeep
│
├─Output
│  │  makefile
│  │
│  └─bin
│          makefile
│
└─Sources
        main.cpp

源码:https://github.com/AZMDDY/vscode_cpp_template.git


引言

VSCode作为微软推出的一款免费的轻量级的集成开发环境,可谓是良心之作。它拥有VS的高颜值,而且像瑞士军刀一样,拥有丰富的插件,c/c++、java、python、js、html等等,它都能轻松驾驭。

目录

文章目录

    • 引言
    • 目录
    • 安装
      • VSCode的安装
      • MinGW的安装
    • Get Started
      • 安装插件
      • helloworld
        • 配置智能感知
        • 构建代码
        • 调试代码
    • 写在最后

安装

VSCode的安装

VSCode的安装并没有什么特别之处,按照安装引导进行即可。
这里提供VSCode的下载地址:https://code.visualstudio.com/Download

MinGW的安装

在VSCode的C/C++扩展中并不包含C++编译器或调试器,所以我们需要自己安装这些工具。流行的C++编译器是Windows的MinGW,MacOS的XCode的Clang和Linux上的GCC。

MinGW的下载

MinGW的下载地址:
https://sourceforge.net/projects/mingw/files/latest/download?source=files

MinGW的安装也没有什么特别之处,唯一要注意的地方就是,记住你的安装路径,这很重要。

安装完成之后,打开软件,选择我们需要的包下载。具体看下面的图片:

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第1张图片

![image_1cfiv3eqv1j1u1mhivvori1uv3m.png-42.8kB][2]

选择好了之后,点击 Installation->Apply Chagnes,在新的窗口中点击Apply
注意:下载过程中可能会失败,失败了就再次点击Apply重新下载,还出现失败,就吧!
VSCode 的第一个C++程序(windows)[更新2018.10.28]_第2张图片

下载完成后,就需要添加系统环境变量了。
我MinGW的安装目录在F盘。
VSCode 的第一个C++程序(windows)[更新2018.10.28]_第3张图片

F:\MinGW\bin路径添加到环境变量中。
VSCode 的第一个C++程序(windows)[更新2018.10.28]_第4张图片

然后重启你的电脑,在cmd中或者Windows PowerShell 中输入gcc -v验证一下。下图是成功的范例。
VSCode 的第一个C++程序(windows)[更新2018.10.28]_第5张图片

Get Started

打开VSCode,我们可以看到它的欢迎界面。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第6张图片

安装插件

在VSCode编写和调试程序是需要安装相关的插件才能进行的。
在这里我们选择安装C/C++C++ IntellisenseCode RunnerInclude Autocomplete这四插件。
我们点击扩展的图标,在搜索栏里搜索插件的名称。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第7张图片

点击安装,在安装完成之后,点击重新加载,这个插件就会生效。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第8张图片

其它的插件的安装也是如此。

helloworld

新建一个helloword文件夹,作为我们此次的工作区。在资源管理器中打开这个文件夹。
打开这个文件夹后,会发现文件夹没有源文件。这时我们需要新建一个helloworld.cpp源文件。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第9张图片

这时我们可以编写helloworld程序了。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第10张图片

配置智能感知

由于文件夹的配置信息不完整,我们需要自己添加缺少的配置信息。通过快捷方式Ctrl+Shift+P运行C/CPP: Edit configuration ...命令添加缺少的信息并生成c_cpp_properties.json文件。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第11张图片

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第12张图片

c_cpp_properties.json文件中找到如下部分(可能与我的不太一样)
因为我们的系统是windows,所以找win32就能快速的浏览到需要配置的区域。
VSCode 的第一个C++程序(windows)[更新2018.10.28]_第13张图片

更改的最终结果:

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第14张图片

"compilerPath": "F:\\MinGW\\bin\\gcc.exe",添加这一条,设置gcc.exe的路径(根据自己实际gcc.exe路径添加)。

直观的效果就是引用头文件出现的绿色波浪线没了。

构建代码

如果你想从VS Code构建你的应用程序,你需要生成一个tasks.json文件;

打开命令面板(Ctrl + Shift + P)。选择Tasks:Configure Tasks ...命令,单击从模板创建tasks.json文件,您将看到任务运行模板列表,选择Others。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第15张图片

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第16张图片

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第17张图片

最终生成tasks.json文件。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第18张图片

将文件内容修改如下:

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第19张图片

我们将当前页面调整到我们的源程序编辑页面,点击右上角的小三角形,即可运行我们的程序了。到目前为止,helloworld程序就这样顺利运行了。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第20张图片

程序的输出在终端中显示,如果要在终端向程序输入数据,那么还需要进行一点配置。
在命令面板(Ctrl+Shift+P)搜索用户配置,在用户配置文件中,找到Run Code configuration下的code-runner.runInTerminal的值改为true,更改后的结果在右边。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第21张图片

调试代码

为了能够调试,我们还需要生成launch.json文件。

浏览到调试的窗口,去添加配置。选择C++(GDB/LIDB),生成launch.json文件。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第22张图片

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第23张图片

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第24张图片

将launch.json文件内容更改如下:

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第25张图片

在进行调试(F5)的时候,一定要将当前页面调整到我们的源程序编辑页面。不然会出错。

VSCode 的第一个C++程序(windows)[更新2018.10.28]_第26张图片

写在最后

万事开头难,其实也不难,只要掌握了方法,一切都不是问题,在写完helloworld程序之后,再写其他的程序就可以把.vscode直接拿来用,略作修改即可。

附:json文件源码


//tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",  //在launch.json文件中会用到
            "type": "shell",
            "command": "g++",
            "args": [
                "-g", "helloworld.cpp"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

// launch.json
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "(gdb) Launch",                 // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg",                       // 配置类型,这里只能为cppdbg
            "request": "launch",                    // 请求配置类型,可以为launch(启动)或attach(附加)
            "targetArchitecture": "x86",            // 生成目标架构,一般为x86或x64,可以为x86, arm, arm64, mips, x64, amd64, x86_64
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",               // 将要进行调试的程序的路径
            "args": [],                             // 程序调试时传递给程序的命令行参数,一般设为空即可
            "stopAtEntry": false,                   // 设为true时程序将暂停在程序入口处,一般设置为false
            "cwd": "${workspaceFolder}",            // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
            "environment": [],
            "externalConsole": true,                // 调试时是否显示控制台窗口,一般设置为true显示控制台
            "MIMode": "gdb",
            "miDebuggerPath": "F:\\MinGW\\bin\\gdb.exe",   // miDebugger的路径,注意这里要与MinGw的路径对应
            "preLaunchTask": "build",                      // 调试会话开始前执行的任务,与tasks.json中的label的值一样
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

//c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "/usr/include",
                "/usr/local/include",
                "${workspaceFolder}"
            ],
            "defines": [],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "/usr/include",
                    "/usr/local/include",
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },
            "macFrameworkPath": [
                "/System/Library/Frameworks",
                "/Library/Frameworks"
            ]
        },
        {
            "name": "Linux",
            "includePath": [
                "/usr/include",
                "/usr/local/include",
                "${workspaceFolder}"
            ],
            "defines": [],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "/usr/include",
                    "/usr/local/include",
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        },
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "F:\\MinGW\\bin\\gcc.exe",
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },
            "cStandard": "c11",
            "cppStandard": "c++17"
        }
    ],
    "version": 3
}

你可能感兴趣的:(c++)