文件 -> 首选项 -> 设置 -> 搜索“终端”->
找到Terminal>Integrated:Font Family -> 更改为monospace即可
找到Terminal>Integrated:Font Size -> 即可更改字体大小
二.关于vscode使用的基本插件(C++语言)1.c/c++
2.Chinese (Simplified)
3.CMake
4.CMake Tools
三.关于cmake的基本内容与使用(代码编译)1.CMakeLists.txt基本内容(注意文件夹名称应加s,而非CMakeList)
cmake_minimum_required(VERSION 2.7) #要求的cmake最低版本
project(test-2) #项目名称
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall") #追加调试和警告信息
#include_directories(./inc) #头文件的相对路径
include_directories(${CMAKE_SOURCE_DIR}/inc) #头文件绝对路径(CMAKE_SOURCE_DIR表示CMakeLists.txt文件所在的文件夹路径)
#add_library(printhello SHARED printhello.cpp) #生成共享库 以.so结尾
add_library(print ./src/print.cpp) #生成静态库 以.a结尾
add_executable(hello ./src/hello.cpp) #用main函数所在文件生成可执行文件
target_link_libraries(hello print) #将可执行文件与依赖库链接
#add_executable(hello ./src/print.cpp ./src/hello.cpp) #不生成库文件
2.使用
注:为避免cmake生成的文件杂乱,一般新建一个build文件夹,在该文件夹下执行cmake,这样生成的cmake文件只在build文件夹下
在build文件夹下使用:cmake 路径 (路径为CMakeLists.txt文件所在的相对路径),若无报错且正常生成makefile文件后,在build文件夹下使用:make 编译,若正常生成可执行文件并无报错,则说明编译成功
四.关于json文件的内容及基本概念(代码自动编译及调试)
以下均为个人理解,如有错误或偏差,欢迎评论区指正,万分感激!!
注:我最初一直以为json文件是自动生成的,主要是由于不了解json文件,其实launch.json和tasks.json只是两个文件罢了,可以vscode自动生成,也可以手动编写,你无须顾虑手动编写会带来哪些隐患,手动编写和vscode自动生成的都是一样的,同时这两个文件都是在.vscode文件夹下,如果没有出现.vscode文件夹,你也可以手动创建,这同样也都是一样的
1.launch.json文件:这是一个调试的配置文件,能够控制调试过程
创建launch.json文件:
1.点击左侧边栏的运行和调试(或按ctrl+shift+d)
2.点击创建launch.json文件,在跳出的选项中找到C++(GDB/LLDB)并点击
(注:若没有C++(GDB/LLDB)选项,则回到第一步前,先打开一个cpp文件,再执行1,2步)
(有些人第2步做完还会有一个选项步骤,但我没有,所以创建的launch.json没有配置息)
3.点击后会发现左侧边栏的资源管理器中会出现.vscode文件,其中包括launch.json文件
4.因创建的launch.json无配置信息,所以点击右下角的“添加配置”标志,选第一个就好
5.你会发现在"configurations"下出现了一个大括号的内容,每个大括号都是一个配置信息, 且对应有名称"name",你在运行和调试栏中会发现有个下拉选项,该下拉栏中会出现每个配置信息的名称,他决定着你调试时使用哪个配置信息
6.关于配置信息中的每个成员表示什么,你只需将鼠标放在上面便会知晓
7.在这些配置信息中,我们暂时只需关注"program"成员,即程序可执行的完整路径,${workspaceFolder}表示你当前的工作目录,因此如果你按照上述步骤来,这一项会填为:"${workspaceFolder}/build/demo"(其中demo替换为你自己的可执行文件即可)
总的launch.json为:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/demo",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
}
]
}
至此launch.json创建完成,你可以设置一个断点,然后按F5进入调试,看一看能否命中你设置的断点,如果可以,则说明文件配置成功
2.tasks.json文件:据我了解这是一个任务脚本(我暂时只了解将其用于launch前的准备任务)
创建tasks.json文件:
1.点击顶部栏的终端,选择“配置默认生成任务”,如果你像我一样只关注调试,那后面的选项随便选,生成tasks.json文件后删除tasks里的所有内容,删除后的tasks为:"tasks": []
(注:你同样可以将鼠标放在成员上了解该成员的作用)
2.在tasks下创建task任务,每一个task任务都在一个{}大括号中:
3.首先明确我们使用task.json是用来做为调试前的准备工作,在调试之前我不想再在命令行中输入cmake,make等指令,将这些任务都放在task中,因此我们需要准备两条task command任务
4.创建第一个任务:该任务的通俗理解是在build文件夹下执行:cmake ../ 命令
{
"type": "shell",
"label": "cmake",
"options": {"cwd": "${workspaceFolder}/build"},
"command": "cmake ../",
"args": [],
},
(你可以去了解“type”成员,这里不做解读,我尝试去掉type成员最终也成功了)
label成员你可以理解为该任务的标签
option这一句的意思是进入${workspaceFolder}/build目录,即在build目录下进行该任务
command是任务命令
args是任务命令的参数,你可以将参数"../"移动到args中,也可以直接写到command中
4.创建第二个任务:该任务的通俗理解是在build文件夹下执行:make 命令
{
"type": "shell",
"label": "make",
"options": {"cwd": "${workspaceFolder}/build"},
"command": "make",
"args": [],
},
5.因为上述两个任务是独立的,因此我们将其整合为一个任务中,重新创建一个任务,该任务依赖上述两个任务
{
"type": "shell",
"label": "build",
"dependsOrder": "sequence",
"dependsOn":[
"cmake",
"make",
],
},
可以看到该任务没有command成员,而是加入了dependsOn成员,故我将此理解为一个依赖任务;该任务的通俗理解是在build文件夹下执行:cmake ../ + make 命令
总的tasks.json为:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "cmake",
"options": {"cwd": "${workspaceFolder}/build"},
"command": "cmake ../",
"args": [],
},
{
"type": "shell",
"label": "make",
"options": {"cwd": "${workspaceFolder}/build"},
"command": "make",
"args": [],
},
{
"type": "shell",
"label": "build",
"dependsOrder": "sequence",
"dependsOn":[
"cmake",
"make",
],
},
]
}
至此两个文件均已构建,那么如何能够让tasks.json发挥作用呢?
在launch.json文件的"configurations"的最后添加一个成员:"preLaunchTask",并指定要执行的任务为build标签对应的任务,即最后创建的依赖任务,最后的launch.json文件如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/demo",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "build",
}
]
}
至此,所有的json文件已完成,你可以尝试修改代码后直接按F5,将会执行编译并进入调试



