栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

vscode跳坑(针对Linux)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

vscode跳坑(针对Linux)

一.关于更改vscode自带终端文字间隔,字体大小

文件 -> 首选项 -> 设置 -> 搜索“终端”->

        找到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,将会执行编译并进入调试 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号