vscode配置c++环境

第一步:安装vscode编辑器

预先安装:

  1. vscode(https://code.visualstudio.com/)
  2. 在vscode中安装 C/C++ extension for VS Code(在左侧扩展栏中搜索 “C++”)

第二步:安装MinGW-w64工具链

MinGW 提供最新的GCC本地builds、MinGW-w64、其他C++工具和库。也可在 msys的github 处直接下载。

MSYS2需要在 Windows8.1及以上的操作系统运行。

其他注意事项请看:vscode官网

安装完成后,将 MinGW-w64 的 bin 文件夹路径(D:\CodingTools\CandCpp\MinGW64\bin)添加到Windows的 PATH 环境变量中。

最后在 cmd 中输入以下内容,如果有输出信息,表示安装成功。

gcc --version
g++ --version
gdb --version
  1. 请认准核对添加的path变量与 bin 目录的位置是否一致。
  2. gcc 有输出但 gdb 没有,需要从 MinGW-w64 toolset 中安装丢失的包。如编译过程中提示:“The value of miDebuggerPath is invalid.”说明丢失了mingw-w64-gdb package

第三步:建立helloworld.cpp

通过 cmd 进入某一个文件夹下,此目录存放源文件目录。在 cmd 输入:

# 在当前目录下打开vscode
code . 

如果有提示,选中 “Yes, I trust the authors”(只要是自己创建的文件夹)

后续在vscode的当前文件夹下,看到一个文件夹 .vscode,包含以下三个文件:

  • tasks.json:build 指令
  • launch.json:debug 设置
  • c_cpp_properties.json:编译器路径和智能提示设置

添加源文件

image-20230724154312675

ps:关于 vscode 编辑器的一些接口和布局;另外可以通过 tab 键选择智能提示的某些成员。

运行cpp后缀文件

  1. 打开helloworld.cpp使得该文件是 active file

  2. 点击右上角:Run C/C++ File

    image-20230724155111697

  3. 从检测到的系统中的编译器中,选择:C/C++: g++.exe build and debug active file (只会在第一次编译运行此cpp文件时选择编译器)(cpp和g++的区别?)

    image-20230724155359146

  4. 终端显示有以下信息,运行成功

    image-20230724155558595

关于tasks.json

第一次运行程序,c++扩展会在.vscode文件夹下创建一个task.json文件(其实该文件是保存在关于 build 的配置中,?)

下面是一个例子:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",   // 此值会在任务列表中看到(tasks list ?),可以取任意值
            "command": "D:\\CodingTools\\CandCpp\\MinGW64\\bin\\g++.exe",
            // 1. command:明确要运行的程序是使用g++编译器
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            /*
            args数组:传递给g++的命令行参数
            第一个参数-fdiagnostics-color=always:对诊断信息使用颜色(一直),具体看gcc manuals
            -g:生成调式信息({file}:当前在vscode中打开的文件)
            -o:生成目标文件(win是exe后缀)
            ${fileDirname}:{file}所在的文件夹
            ${fileBasenameNoExtension}:{file},不包括后缀
            */
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."  // 任务列表中的任务的详细描述,推荐重命名这个值,从而区分相似任务
        }
    ],
    "version": "2.0.0"
}

关于task.json中变量的含义:https://code.visualstudio.com/docs/editor/variables-reference

play按钮会从task.json读取信息,从而知道如何编译运行程序。可以在task文件中定义多个编译任务,无论哪个任务被标记为默认任务,都会使用play按钮。

如果需要更改更改默认编译器,在命令版(Command Palette)中运行 Tasks: Configure Default Build Task (?)。或者可以更改task.json文件,移除默认配置,并且用:

    "group": "build",

替换默认配置中的下列部分:

    "group": {
        "kind": "build",
        "isDefault": true
    },

编译多cpp文件

使用参数"${workspaceFolder}/*.cpp" 代替 ${file}

也可以更改输出文件的名称,使用硬编码方式
"${fileDirname}\\${fileBasenameNoExtension}.exe"

"${workspaceFolder}\\myProgram.exe"

上述只是官网文档的说法,重点要理解vscode json文件的变量含义:vscode json变量
比如${workspaceFolder}:是vscode打开的文件夹;
可能你要编译的多个cpp文件是在打开文件夹下的某个子目录,因此要用${fileDirname}\\*.cpp

Debug helloworld.cpp

  1. 返回helloworld.cpp使其成为一个活跃文件

  2. 在鼠标某一行左侧边缘,或者在当前行按 F9 设置断点

  3. 右上角的下拉按钮中点击 Debug C/C++ File

    image-20230727123559095

    编辑器在对断点debug前,会高亮断点行;鼠标选中debug控制器左侧的原点,可拖动debug控制器的位置。

debug

1. 单步调试

1、设置好断点后,点击debug。点击debug控制器的第二个选项:Step Over(F10),结果如下图。此时会执行for循环中的第一行,跳过关于vector、string等需要被调用的类的内部函数,此时看左侧msg变量被创建和初始化。

image-20230728090152005

2、再次按下Step Over(F10)

image-20230728090630332

3、可以继续按下Step Over知道循环结束(C++ extension 2019.3 以后的版本,不会输出任何信息到Debug Console直到循环退出)。如果希望更深入地debug源代码中关于C++ standard library,可以按下Step Into(F11)

image-20230728211751154

返回helloword.cpp源代码:

  • 一直Step Over
  • 在for循环内部的cout附近插入断点,再按F5(Continue),就重新回到了for循环的cout语句。(此时如果按一次F5,terminal会显示一个vector中的单词)

4、debug结束后,终端会显示输出,也包含由GDB输出的诊断信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2QxAw1FI-1690797412575)(C:\Users\w\AppData\Roaming\Typora\typora-user-images\image-20230728212854134.png)]

2. 设置监视器(set a watch)

如果在debug时想观察一个变量的值,可以设置一个watch(监视)

  1. 现在循环中插入断点。点击左侧watch栏的加号,输入“word”(即循环变量的名称)。现在可以观察word中的值。

    image-20230728213518784
  2. 增加另一个watch:在循环前增加此语句:int i = 0; 然后在循环中增加语句: i++; 在watch栏增加对变量i的watch。

    image-20230728213916405
  3. 在debug过程中,如果想快速查看任何变量的值,可以将鼠标指针悬停在该变量上。

    image-20230728214406477

通过修改launch.json进行自定义debug

用play按钮或者F5debug时,C++扩展会动态创建debug配置。有时需要自定义debug配置(比如,需要在运行时指定一些参数传递给程序),可以在launch.json文件中自定义debug配置信息。

image-20230728215423029

选择第一个,创建一个launch.json文件。然后在下拉列表中选择GDB。

image-20230728215759705

然后点击右下角的Add configuration:

image-20230728220126955

以上几步的过程和vscode官方文档的教程不太一样,没有选取g++编译器的debug的过程。

最后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": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "enter program name, for example ${workspaceFolder}/a.exe", // 想要debug的程序
            // 官方文档的设置为:"${fileDirname}\\${fileBasenameNoExtension}.exe", 即活跃文件夹下后缀为exe的活跃文件
            "args": [],  // 此属性是要传递给程序的参数数组
            "stopAtEntry": false, // 默认情况下C++扩展不会增加任何断点在程序中,stopAtEntry为false
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/path/to/gdb",
            // gdb.exe的位置,如"C:\\msys64\\mingw64\\bin\\gdb.exe"
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}   

配置好launch.json后,当需要对程序debug,play按钮和f5会读取此文件信息。


其他关于C/C++的设置

如果想要更多关于 C/C++扩展的控制,可以创建一个文件: c_cpp_properties.json。在此文件中可以修改一些设置,如编译器路径、include路径、C++标准(默认是C++17)以及其他。步骤:

  1. Ctrl+Shift+P 打开命令版,输入“C/C++”,选中C/C++: Edit Configurations (UI)。这将会打开 C/C++配置页面,如果对此页面有任何改动,VS Code会将改动写入 .vscode文件夹下的 c_cpp_properties.json文件中。

    image-20230731174031288

  2. 查看配置文件页面和json文件内容:

    image-20230731174639751

    image-20230731174702183

    includePath:程序包含的头文件不在你的工作区或标准库路径,添加其路径到此数组中。

    compilerPath:C++标准库头文件路径。关于此参数的查找顺序:

    1. 首先查找MSVC编译器;
    2. 查找windows中是否存在子系统linux的g++;
    3. MinGW-w64 的g++;

    如果已经安装过WSL(Windows Subsystem for Linux,第2步)或 Visual Studio ,则需要修改 compilerPath 参数。


参考来源:

  1. VS Code官方文档
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
hibernate-jpa-2.1-api 1.0.2是一个Java持久化规范的实现库。它是基于JPA(Java Persistence API)2.1规范的Hibernate实现。Hibernate是一个流行的ORM(对象关系映射)框架,用于在Java应用程序和关系数据库之间进行数据持久化。 该版本的hibernate-jpa-2.1-api是对JPA 2.1规范的实现,并且是Hibernate团队为了确保应用程序与Java EE 7兼容性而发布的一个版本。 JPA是一种使用对象模型操作数据库的标准规范,它提供了一组API,使开发人员可以使用面向对象的方式访问和操作数据库。Hibernate作为一个JPA的实现,提供了许多附加的功能和特性,使得开发人员可以更加简化和灵活地进行数据库操作。 通过使用hibernate-jpa-2.1-api,开发人员可以使用JPA的标准API,以及Hibernate提供的独有特性,来实现应用程序的数据持久化需求。它提供了实体管理器,用于管理实体对象的生命周期,以及CRUD操作。此外,它还提供了用于查询和各种持久化注解的支持。 通常情况下,使用hibernate-jpa-2.1-api需要将其添加到项目的依赖中,并与其他必需的Hibernate库一起使用。开发人员需要熟悉JPA的基本概念和API,并且理解Hibernate特有的扩展和配置选项。 总的来说,hibernate-jpa-2.1-api 1.0.2提供了开发人员在使用JPA进行数据持久化时的基本工具和功能。它是Hibernate团队为了支持JPA 2.1规范而发布的一个版本,开发人员可以使用它来简化和灵活地操作数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值