CMake在Windows环境下Visual Studio Code的使用

打印 上一主题 下一主题

主题 1653|帖子 1653|积分 4959

1,安装下载

地点:Visual Studio Code - Code Editing. Redefined


双击安装

选择安装路径





可勾选微软的AI工具


2,环境先容

2.1 ,界面先容


2.2中文包的安装



下载中文简体

汉化后的界面

2.3 设置C/C++环境

VSCode安装好之后,我们还是要知道,VSCode毕竟是一个高级的编辑器,只能用来写C/C++代码,不能直接编译代码。
所以,如果我们要能使用VSCode搭建C/C++的编译和调试环境,还必须有编译器使用。
为了方便,我们就使用MinGw-w64 ,MinGw-w64移植到windows平台的一个gcc编译器,使用起来也是非常方便的。
下面我们就演示怎么下载和设置MinGw-w64
地点:https://sourceforge.net/projects/mingw-w64/






解压后我们会得到一个mingw文件夹

将其复制到你需要的位置
双击打开并进入bin文件夹内,这里有我们的gcc(C语言编译器)、g++(C++编译器),gdb调试器(可以使用断点调试)等
   这里说gcc是C语言编辑器,g++是C++的编译器其实不太准确,因为gcc也可以编译C++,但是需要自己设置链接C++的库,g++默认链接了C++的库。
  

复制bin路径


!如许我们的预备环境就设置好了
我们可以使用一些下令来测试一下,按win+r输入cmd打开终端
以此输入


2.4  

安装vscode并安装一下必备的插件

vscode安装各人应该都会,如果通过浏览器下载vscode速度比力慢的话,可以复制下载链接放到迅雷里面去下载
安装必备插件
我们需要安装两个插件

  • 安装C/C++插件:

3  设置

设置阶段我提供了两类设置方式,各人按需选择即可
   第一类 使用vscode插件举行设置
这类设置方法一般来说不需要自己动手设置内容,只需要安装一下插件即可。
  优点:使用简单,基本上拿来就可以使用,比力适合C/C++初学者(因为老师们貌似上来都是直接教C/C++语法,而不是C/C++编译器、C/C++标准、C/C++项目构成等一些C/C++基本内容)以及一些不需要复杂功能的同学。
缺点:可扩展性差(使用插件基本上是用插件设置好的下令去编译运行程序,如果你需要改或扩展一些设置的话,你得对一些下令很熟悉,当然这不是重点,重点是使用插件设置一般只能有一个有用的设置项,例如:如果你想从调试模式切换到编译模式,你得手动更改一下设置文件,而不是像大部门编辑器那样,选择一个设置去运行)
样例一:使用run code插件

   因为插件设置实质上是用它提供的指令举行编译执行,因此无法直接使用断点调试功能,需要对设置举行一定的更改
    这里以使用run code为例,在扩展里搜索code runner这个插件并安装
  


   程序是在下面的输出栏中运行的,是无法输入内容的,所以我们还需要改一些内容,以便能够正常输入内容。
    找到code runner扩展,点击扩展设置,找到Run In Terminal并勾上,如许就能够正常地输入内容了。
  



第二类 自界说设置

这类设置方法要自己手写设置内容,比力复杂,但可扩展性强
优点:可扩展性强
缺点:设置比力复杂、需要一定的知识储备
样例一:使用windows启动,让编译的文件放在同目次下的build文件夹中,并在黑窗(cmd)中运行
在设置之前,我们需要先创建一个.cpp文件,这里我创建了一个Test文件夹,并写了一个hello world。
   请注意,一切的设置都要从一个cpp文件的编辑界面开始,否则vscode的提示大概会不太一样
    样例一的设置方式因为本质上就是直接编译运行,因此无法使用断点调试功能
  

第一步:设置基本环境
按下ctrl + shift + p打开下令面板,输入C/C++,找到C/C++编辑设置(UI)打开

你可以在这个页面中选择编译器,更改C/C++标准,还可以更改IntelliSense 模式
   PS:IntelliSense 模式和文本解析有关,如果你选择的IntelliSense模式和你的编译器不匹配,那么会报错,这就会引起例如写代码的时间没有提示、编辑器说代码精确、编译的时间却不精确等问题
  

这里可以选择你需要的C/C++标准

设置的内容会自动写入.vscode文件夹中的c_cpp_properties.json文件中。
这是我的c_cpp_properties.json文件内容
  1. {
  2.     "configurations": [
  3.         {
  4.             "name": "Win32",
  5.             "includePath": [
  6.                 "${workspaceFolder}/**"
  7.             ],
  8.             "defines": [
  9.                 "_DEBUG",
  10.                 "UNICODE",
  11.                 "_UNICODE"
  12.             ],
  13.             "compilerPath": "F:/C++Development/mingw-w64/13.1.0/bin/g++.exe",
  14.             "cStandard": "c17",
  15.             "cppStandard": "gnu++17",
  16.             "intelliSenseMode": "windows-gcc-x64"
  17.         }
  18.     ],
  19.     "version": 4
  20. }
复制代码

第二步:设置task编译使命
按下ctrl + shift + p打开下令面板,输入task,找到 使命:设置使命 打开。


这里,先容一下文件内需要注意的设置项

这是我的task.json中的设置内容
  1. {
  2.         "version": "2.0.0",
  3.         "tasks": [
  4.                 {
  5.                         "type": "cppbuild",
  6.                         "label": "C/C++: g++.exe 生成活动文件",
  7.                         "command": "E:/Microsoft VS Code/mingw64/bin/g++.exe",
  8.                         "args": [
  9.                                 "-fdiagnostics-color=always",
  10.                                 // 这个命令的作用是转化成GBK编码,可以防止终端中出现乱码
  11.                 // 乱码问题原因:终端编码和vscode编码不一致。
  12.                 // 国内大部分电脑终端编码默认是gbk,而vscode编码默认是utf-8,所以会出现问题乱码问题。
  13.                 // 加上这个命令后先转化为gbk编码后编译,就不会出现乱码了。
  14.                                 // "-fexec-charset=GBK",
  15.                                 "-g",
  16.                                 "${file}", // 如果要多文件编译,改成 "${fileDirname}\\*.c*" 可以把c和cpp文件都作为cpp文件编译。
  17.                                 "-o",
  18.                                 // 这里加了一个build,让编译后的程序在同目录下的build文件夹中
  19.                                 "${fileDirname}\\${fileBasenameNoExtension}.exe"
  20.                         ],
  21.                         "options": {
  22.                                 "cwd": "E:/Microsoft VS Code/mingw64/bin"
  23.                         },
  24.                         "problemMatcher": [
  25.                                 "$gcc"
  26.                         ],
  27.                         "group": "build",
  28.                         "detail": "编译器: E:/Microsoft VS Code/mingw64/bin/g++.exe"
  29.                 }
  30.         ]
  31. }
复制代码
第三步:设置launch.json启动使命
因为现在的C/C++插件不支持通过下令面板创建使命,所以我们需要手动建一个launch.json文件
建完后打开,我们会发现右下角有一个添加设置

选择windows启动

  1. {
  2.     "configurations": [
  3.         
  4.         {
  5.             "name": "(Windows) 启动",
  6.             "type": "cppvsdbg",
  7.             "request": "launch",
  8.             // 这项是启动的程序位置,把tasks.json中的生成文件的路径复制粘贴过来就可以了
  9.             "program": "${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
  10.             "args": [],
  11.             "stopAtEntry": false,
  12.             "cwd": "${fileDirname}",
  13.             "environment": [],
  14.             // 这项改为integratedTerminal,就和code runner一样是在vscode内置终端中运行了
  15.             "console": "externalTerminal"
  16.              // 这一项一开始没有,要自己写,代表启动前先执行的编译任务,把tasks.json中的label复制粘贴过来就可以了
  17.         }
  18.     ]
  19. }
复制代码

样例二:使用gdb启动,让编译的文件放在同目次下的build文件夹中,并在vscode中运行(可以使用断点调试)



样例二使用了gdb调试器,所以能使用vscode的断点调试功能。


样例二与样例一稍作更改的地方是launch启动使命和task编译使命,因此就不配图演示了,只需要对照有注释的地方举行更改即可。
task编译使命
这是我的编译使命:
  1. {
  2.         "version": "2.0.0",
  3.         "tasks": [
  4.                 {
  5.                         "type": "cppbuild",
  6.                         "label": "C/C++: g++.exe 生成活动文件",
  7.                         "command": "E:/Microsoft VS Code/mingw64/bin/g++.exe",
  8.                         "args": [
  9.                                 "-fdiagnostics-color=always",
  10.                                 // 这个命令的作用是转化成GBK编码,可以防止终端中出现乱码
  11.                 // 乱码问题原因:终端编码和vscode编码不一致。
  12.                 // 国内大部分电脑终端编码默认是gbk,而vscode编码默认是utf-8,所以会出现问题乱码问题。
  13.                 // 加上这个命令后先转化为gbk编码后编译,就不会出现乱码了。
  14.                                 "-fexec-charset=GBK",
  15.                                 "-g",
  16.                                 "${file}", // 如果要多文件编译,改成 "${fileDirname}\\*.c*" 可以把c和cpp文件都作为cpp文件编译。
  17.                                 "-o",
  18.                                 // 这里加了一个build,让编译后的程序在同目录下的build文件夹中
  19.                                 "${fileDirname}\\build\\main.exe"
  20.                         ],
  21.                         "options": {
  22.                                 "cwd": "E:/Microsoft VS Code/mingw64/bin"
  23.                         },
  24.                         "problemMatcher": [
  25.                                 "$gcc"
  26.                         ],
  27.                         "group": "build",
  28.                         "detail": "编译器: E:/Microsoft VS Code/mingw64/bin/g++.exe"
  29.                 }
  30.         ]
  31. }
复制代码
launch调试使命
   注意:如果你不是copy这里给出的代码,而是自己像上文一样点击添加设置然后修改,请选择gdb启动而不是windows启动。
  1. {
  2.     "configurations": [
  3.     {
  4.         "name": "(gdb) 启动", // 调试任务的名称,改一个你想要的
  5.         "type": "cppdbg",
  6.         "request": "launch",
  7.         "program": "${fileDirname}\\build\\main.exe",  // 入口程序的位置,和task任务生成的程序位置相同
  8.         "args": [],
  9.         "stopAtEntry": false,
  10.         "cwd": "${fileDirname}",
  11.         "environment": [],
  12.         "externalConsole": false,
  13.         "MIMode": "gdb",
  14.         "miDebuggerPath": "E:/Microsoft VS Code/mingw64/bin/gdb.exe", // gdb调试器的位置,和gcc、g++在一个目录下  
  15.         "setupCommands": [
  16.             {
  17.                 "description": "为 gdb 启用整齐打印",
  18.                 "text": "-enable-pretty-printing",
  19.                 "ignoreFailures": true
  20.             },
  21.             {
  22.                 "description": "将反汇编风格设置为 Intel",
  23.                 "text": "-gdb-set disassembly-flavor intel",
  24.                 "ignoreFailures": true
  25.             }
  26.         ],
  27.         "preLaunchTask": "C++调试"  // 启动前调用编译任务
  28.     }
  29.     ]
  30. }
复制代码


常见问题

Q:终端出现乱码怎么办?

A:在编译的时间加上"–exec-charset=GBK",具体可以看本教程的示例,两类设置方式中都有讲解
Q:在第二种设置方式中,选择task使命时,没有g++、gcc选项怎么办?

A:copy教程中的设置,然后对照图片说明举行更改。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表