• 为Microsoft C ++配置VS Code


    为Microsoft C ++配置VS Code

    将VS Code配置为在Windows上使用Microsoft C ++编译器和调试程序(即MSVC)

    准备工作

    1. 安装VSCode,并且安装官方C++插件

    2. 安装VS 2017 / VS2019 或其他版本,并且安装了MSVC工具集

    MSVC 和 Mingw-w64

    Mingw-w64 比较简单,只需要将bin路径加入path环境变量列表即可正常工作

    MSVC 是一套复杂的工具集,其环境变量的配置非常复杂,以至于VS的最近几个版本将配置写到了脚本中,并且明确建议用户不应使用全局环境变量设置,而是使用Developer Command Prompt,而且随着用户修改VS套件,适用的环境变量也会变化.对应到VS Code中,由于没有全局环境变量的支持,支持调用cl.exe是无法运行的,VS Code官方提供的建议是从Developer Command Prompt启动VS Code,这样启动的VSCode将会继承MSVC的环境变量,因而可以正常使用MSVC编译

    方法一: 从Developer Command Prompt for VS启动VS Code

    参考官方文档为Microsoft C ++配置VS Code

    VS Code版本更迭较快,目前已经支持智能生成配置文件,因此这里将官方文档的操作步骤稍微修改如下:

    1. 在开始菜单启动Developer Command Prompt

    2. 在上面的命令行界面启动VSCode,命令格式为: code 项目路径

    3. Ctrl+Shift+P调出命令面板然后输入C++,选择C/C++:编辑配置(UI)

    4. 指定Compiler path,即cl.exe的路径,类似:

      C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.22.27905inHostx64x64cl.exe
      
    5. 指定IntelliSense mode为msvc-x64

    6. 回到VS Code主界面,新建一个CPP文件,等待VSCode加载语言引擎,然后F5等待弹出命令面板, 依次选择 C++(WIndows), cl.exe build

    7. 系统自动创建配置文件launch.json和tasks.json并且开始编译调试CPP文件

    8. 主要配置完成

    总结: 官方给出的方法就是从Developer Command Prompt启动VS Code使其继承MSVC环境变量.每次启动C++文件夹都需要如此操作

    方法二: 将方法一的启动过程写个简单的脚本

    在方法一的基础上,为每个c++文件夹写个简单的启动脚本,注意修改相应路径.VsDevCmd.bat即Developer Command Prompt对应的脚本路径

    @echo off
    
    call "F:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7ToolsVsDevCmd.bat"
    
    code "F:SourceC++projects\__ENV-MSVC"
    

    脚本可以放置在任意位置,双击脚本即可启动带有MSVC环境的VS Code

    方法三: 修改tasks.json,直接启动VSCode

    将Developer Command Prompt加入tasks.json,缺点是每次启动task都会执行VsDevCmd.bat,增加大约2s的时间成本

    {
        "tasks": [
            {
                "label": "cl.exe build active file",
                "type": "shell",
                "command": "call",
                "args": [
                    "F:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat", 
                    {
                        "value": "& cl.exe",
                        "quoting": "escape"
                    },
                    "/Zi",
                    "/EHsc",
                    "/Fe:",
                    "${fileDirname}\${fileBasenameNoExtension}.exe",
                    "${file}"
                ],
                "problemMatcher": "$msCompile",
                "dependsOrder": "sequence",
                "dependsOn": [],
                "presentation": {
                    "echo": true,
                    "reveal": "always",
                    "focus": false,
                    "panel": "shared",
                    "showReuseMessage": true,
                    "clear": false
                },
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            }
        ],
        "version": "2.0.0"
    }
    

    方法四: 将编译任务写成bat脚本供tasks.json直接调用

    将编译任务写成脚本文件build.bat,假设此脚本放在根目录下

    @echo off
    rem chcp 65001
    
    call "F:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7ToolsVsDevCmd.bat"
    
    set compilerflags=/Zi /EHsc
    
    set linkerflags=/OUT:main.exe
    
    cl.exe %compilerflags% /Fe main.cpp /link %linkerflags%
    

    然后在tasks.json中直接调用此脚本即可

    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "build",
                "type": "shell",
                "command": "build.bat",
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            }
        ]
    }
    

    总结

    从效率上看官方提供的方法最佳,其他方法可能更加方便使用

  • 相关阅读:
    NodeJ node.js Jquery Ajax 跨域请求
    NodeJ node.js基础
    VueX--- actions→mutations or getters→state 四大金刚
    Vue--- VueX组件间通信链接(共有方法放入了扩展目录store里面) 1.2
    arrayList 和hashSet的区别
    java面试的题目兔子、素数、水仙花
    解决java compiler level does not match the version of the installed java project facet
    Target runtime com.genuitec.runtime.generic.jee50 is not defined工程错误
    eclipse导入tomcat时Unknown version of Tomcat was specified
    eclipse开发SVN下文件显示修改时间和提交作者的方法
  • 原文地址:https://www.cnblogs.com/alex-zen/p/11376705.html
Copyright © 2020-2023  润新知