zoukankan      html  css  js  c++  java
  • 在mac上使用vscode创建第一个C++项目

    https://blog.csdn.net/bujidexinq/article/details/106539523

     https://www.cnblogs.com/lianshuiwuyi/p/8094388.html

     https://www.jianshu.com/p/bb430259b7af

    准备工作:
    安装好vscode
    安装插件『C/C++』
    正式开始:
    首先是创建一个空的文件夹(比如文件夹为test),然后在其中新建一个.cpp文件(比如文件为hello.cpp)打开vscode打开test文件夹作为工作目录,接下来用三步配置好C++开发环境

    第一步:
    [⇧⌘P]打开命令模式,选择[C/Cpp: Edit Configurations(JSON)]命令,回车后会自动生成一个.vscode目录,目录下有一个c_cpp_properties.json文件,下面给出我的文件示例:

    1.  
      {
    2.  
          "configurations": [
    3.  
              {
    4.  
                  "name": "Mac",
    5.  
                  "includePath": [
    6.  
                      "${workspaceFolder}/**",
    7.  
                      "/Library/Developer/CommandLineTools/usr/include/c++/v1",
    8.  
                      "/usr/local/include",
    9.  
                      "/Library/Developer/CommandLineTools/usr/lib/clang/11.0.0/include",
    10.  
                      "/Library/Developer/CommandLineTools/usr/include"
    11.  
                  ],
    12.  
                  "defines": [],
    13.  
                  "macFrameworkPath": [
    14.  
                      "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks",
    15.  
                      "/System/Library/Frameworks",
    16.  
                      "/Library/Frameworks"
    17.  
                  ],
    18.  
                  "compilerPath": "/usr/bin/clang",
    19.  
                  "cStandard": "c11",
    20.  
                  "cppStandard": "c++17",
    21.  
                  "intelliSenseMode": "clang-x64"
    22.  
              }
    23.  
          ],
    24.  
          "version": 4
    25.  
      }


    第二步:
    [⇧⌘P]打开命令模式,选择[Tasks: Configure Task]命令,选择的模板为MSBuild,回车后会自动在.vscode目录下生成一个tasks.json文件,下面给出我的文件示例:

    1.  
      {
    2.  
          // See https://go.microsoft.com/fwlink/?LinkId=733558
    3.  
          // for the documentation about the tasks.json format
    4.  
          "version": "2.0.0",
    5.  
          "tasks": [
    6.  
              {
    7.  
                  "label": "build c++",
    8.  
                  "type": "shell",
    9.  
                  "command": "g++",
    10.  
                  "args": [
    11.  
                      "${file}",
    12.  
                      "-std=c++17",
    13.  
                      "-g",
    14.  
                      "-Wall",
    15.  
                      "-lm",
    16.  
                      "-o",
    17.  
                      "${fileDirname}/${fileBasenameNoExtension}.out"
    18.  
                  ],
    19.  
                  "group": "build",
    20.  
                  "presentation": {
    21.  
                      "reveal": "silent",
    22.  
                      "panel": "shared",
    23.  
                      "echo": true,
    24.  
                      "focus": false,
    25.  
                      "showReuseMessage": true,
    26.  
                      "clear": false
    27.  
                  },
    28.  
                  "problemMatcher": "$gcc"
    29.  
              },
    30.  
              {
    31.  
                  "label": "run c++",
    32.  
                  "type": "shell",
    33.  
                  "dependsOn": "build c++",
    34.  
                  "command": "${fileDirname}/${fileBasenameNoExtension}.out",
    35.  
                  "presentation": {
    36.  
                      "focus": true
    37.  
                  },
    38.  
                  "group": "test"
    39.  
              }
    40.  
          ]
    41.  
      }


    第三步:
    [⇧⌘P]打开命令模式,选择[Debug: Open launch.json]命令,选择的模板为C/C++,回车后会自动在.vscode目录下生成一个launch.json文件,下面给出我的文件示例:

    1.  
      {
    2.  
          // Use IntelliSense to learn about possible attributes.
    3.  
          // Hover to view descriptions of existing attributes.
    4.  
          // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    5.  
          "version": "0.2.0",
    6.  
          "configurations": [
    7.  
              {
    8.  
                  "name": "c/c++ Launch",
    9.  
                  "type": "cppdbg",
    10.  
                  "request": "launch",
    11.  
                  "program": "${fileDirname}/${fileBasenameNoExtension}.out",
    12.  
                  "args": [],
    13.  
                  "stopAtEntry": false,
    14.  
                  "cwd": "${workspaceFolder}",
    15.  
                  "environment": [],
    16.  
                  "externalConsole": true,
    17.  
                  "MIMode": "lldb",
    18.  
                  "preLaunchTask": "build c++",
    19.  
                  "logging": {
    20.  
                      "trace": true,
    21.  
                      "traceResponse": true,
    22.  
                      "engineLogging": true
    23.  
                  }
    24.  
              }
    25.  
          ]
    26.  
      }


    完成这三步C++开发环境就配置好了,接下来就可以编译,运行,调试C++程序了

    [⇧⌘B]是编译程序,[⇧⌘R]是运行程序,如果安装了插件『Code Runner』可以直接运行程序

    如果需要调试,那就按F5,进入调试模式即可

    好了,这样就可以顺利地在vscode上进行C++开发啦,赶快行动起来吧~

    平时工作做C/C++方面的开发更多还是在Windows下使用Visual Studio,如果服务器或者通用组件需要跨平台,Windows上跑通后其他平台上编译发布,一般性问题通过Log,Dump什么的基本上也就够了;如果的确需要调试,有VisualGDB的存在也很方便;但在macOS下使用过IDE性质的XCode,CLion,Qt Creator,也使用过轻量级的诸如TextMate, Sublime Text,但始终找不到Visual Studio的感觉,回想起来macOS下使用最多的C/C++开发环境居然是CodeRunner;直到最近这几天有空折腾了一下Vistual Studio Code,瞬间找到了初恋的感觉!

    需求

    粗略想了下,进行C/C++开发,我需要的功能大概有:

    1. 格式化
    2. 自动完成
    3. Lint
    4. 符号检索
    5. 方便的跳转和查看
    6. 可视化调试(别给我提GDB,你能苛求一个连VIM都讨厌的人使用GDB?)

    而上面这些功能使用Visual Studio Code和必要的插件几乎可以达到Vistual Studio 80%的体验

    打造

    1. 安装Visual Studio Code

    2. 安装cpptools插件,这个Microsoft出品的插件几乎囊括了我前面说的所有功能,但他的自动完成是Fuzzy的,非常糟糕;另外他的Lint功能也仅仅只局限于文件包含;注:该插件安装完成后会自动安装一些必要的依赖更新.

    3. 安装C/C++ Clang插件,这个插件只有两个功能,自动完成诊断Diagnostic(Lint),其使用Clang实时分析,什么模板嵌套都能分析,功能异常强大;

    4. 上面两个如果同时启用的话会发生冲突,并且[C/C++ Clang]插件默认不进行C++11分析,点击[Code]->[首选项]->[用户设置]进行如下配置:

      "C_Cpp.autocomplete": "Disabled",
      "clang.cxxflags": ["-std=c++11"]
      

    注:仅仅需要上面两个插件就够了,高安装量的C++ Intellisense插件千万别装,它会和上述两个插件冲突,从而出现各种奇怪问题;

    体验

    1. 打开一个包含有C/C++文件的目录;

    2. 使用[F1]或[⇧⌘P]打开命令模式,选择[C/Cpp: Edit Configurations]命令,其会在目录的.vscode配置目录下生成一个c_cpp_properties.json文件,修改Mac节点下的includePath变量添加C++11跳转支持:

      "includePath": ["/usr/include", "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1"],
      

      注:如果引入其他库,将库路径按以上方式附在后面即可

    3. 打开命令模式,选择[Tasks: Configure Task Runner]命令,其会在目录的.vscode配置目录下生成一个tasks.json文件,修改配置:

      {
          // See https://go.microsoft.com/fwlink/?LinkId=733558
          // for the documentation about the tasks.json format
          "version": "0.1.0",
          "command": "clang++",
          "isShellCommand": true,
          "args": ["main.cpp", "-std=c++11", "-g"],
          "showOutput": "always"
      }
      

      注:vscode的Tasks系统其实就是一个命令行构建工具;这里我使用clang++编译命令;简单的说,main.cpp是入口文件,你可以修改成你自己的,如果是有多个入口的测试项目,我一般定义为${file},只是必须选定文件启动;另外args中必须添加-g选项,否则调试无效;要支持C++11,必须添加-std=c++11选项;如果还有其他编译要求,将选项附加在后面即可(调试模式我经常使用–save-temps来查看编译中间文件);之后[⌘P]然后执行[task clang++],或者直接[⇧⌘B]就可自动编译.

    4. 打开命令模式,选择[Debug: Open launch.json]命令,其会在目录的.vscode配置目录下生成一个launch.json文件;修改program为:${workspaceRoot}/a.out;如果需要读取参数,修改args配置;我一般会习惯性的加上"preLaunchTask": "clang++"配置,这样当源代码发生改变时,启动调试会自动编译;

    5. 之后的调试流程,基本上就和Vistual Studio一样了,附一张调试图:

     
     

    参考资料

    C/C++ for VS Code (Preview)

    原始链接 版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 4.0



    作者:stidio
    链接:https://www.jianshu.com/p/bb430259b7af
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    IIS服务器应用程序不可用的解决办法
    C#几个经常犯错误汇总
    C1flexgrid格式化
    图片自动按比例缩小代码(防止页面被图片撑破)
    VSS2005的使用与配置过程
    ASP.NET通过IHttpModule实现伪静态
    五一游玩收藏
    plants
    几个JS的方法
    英式英语VS美式英语的差异
  • 原文地址:https://www.cnblogs.com/sundayvc/p/14213880.html
Copyright © 2011-2022 走看看