VSCode调试文件launch.json、tasks.json配置、CMakeLists.txt模板

注:学习笔记,因为是跨平台(Linux虚拟机和windows复制内容很麻烦就使用这种方法来记一些笔记)

学习视频为:https://www.bilibili.com/video/BV1fy4y1b7TC?p=24&spm_id_from=333.880.my_history.page.click

launch是VSCode的启动程序配置文件
tasks是编译的任务的文件,配置好的tasks文件相当于运行了g++ -g main.cpp -o main
调试的时候,这两个文件配合就可以实现自动调试(不需要手动编译了)

CMakeLists.txt模板

这是在VS Code中配置的一个CMake的代码模板,用到什么选项就复制粘贴后取消注释,正常使用
可能不全,之后会慢慢添加更改
复制到CMake的用户代码模板中就可以使用了
请添加图片描述请添加图片描述
请添加图片描述
同理,在用户代码片段中也可以找到其余文件比如C/C++、python等语言的代码片段,这里不再具体介绍

"Print to console":{
		"prefix": "CMake",
		"body": [
			"# 指定cmake最低版本",
			"cmake_minimum_required(VERSION 3.0)",
			"",

			"# 项目名称:project(MAIN)",
			"project(${1:PROJECT_NAME})",
			"",

			"# 有些变量可能和add_compile_options中的重复,要注意",
			"# CMAKE_C_FLAGS:gcc编译选项",
			"# CMAKE_CXX_FLAGS:g++编译选项;\"${CMAKE_CXX_FLAGS} -std=c++11\":设置编译标准为c++11",
			"# CMAKE_BUILD_TYPE:编译类型;(Debug:调试;Release:发布)",
			"# CMAKE_C_COMPILER:指定c编译器",
			"# CMAKE_CXX_COMPILER:指定c++编译器",
			"# EXECUTABLE_OUTPUT_PATH:可执行文件输出存放路径",
			"# LIBRARY_OUTPUT_PATH:库文件输出存放的路径",
			"# set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -std=c++11\")",
			"# set(CMAKE_BUILD_TYPE Debug or Release)",

			"# 添加编译选项:add_compile_options(-Wall -g)",
			"# -g:输出带调试信息的可执行文件",
			"# -O[n]:优化代码,一般为-O2",
			"# -Wall:输出警告信息",
			"# -std=c++11:设置编译标准",
			"# -D:定义宏",
			"# add_compile_options(-Wall -g)",
			"",

			"# 添加头文件搜索路径:include_directories(./include)",
			"# include_directories(include_PATH)",
			"",

			"# 添加多个特定的库文件搜索路径:link_directories(LIB_PATH1 LIB_PATH2 ...)",
			"# link_directories(LIB_PATH)",
			"",

			"# 相当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置:add_subdirectory(source_dir [binary_dir])",
			"# add_subdirectory(source_dir)",
			"",

			"# 生成库文件:add_library(libname MODE source1 source2 ...)",
			"# add_library(libname MODE source1 source2 ...)",
			"# libname:生成库的名称",
			"# MODE:库的模式:{SHARED:动态库; STATIC:静态库}",
			"# source:源文件,可以使用set设置的变量代替",
			"# add_library(libname MODE source)",
			"",

			"# 设置变量名称:set(VALUE_NAME ./src/test01.cpp ./src/test02.cpp);${}:获取变量的值",
			"# 就是使用一个变量名称代替多个cpp文件,方便调用",
			"# set(VALUE_NAME ./src/test01.cpp)",
			"",
			
			"# 发现一个目录下所有的源代码文件放置到一个列表中,并将该列表存储到一个变量中:aux_source_directory(PATH VALUE_NAME)",
			"# PATH:源文件的路径",
			"# VALUE_NAME:生成的变量名",
			"# 如果main函数的源文件也在该路经中保存,那么直接可用add_executable(target ${VALUE_NAME})生成可执行的目标文件",
			"# aux_source_directory(PATH VALUE_NAME)",
			"",

			"# 编译可执行文件:add_executable(target main.cpp ${VALUE_NAME});${}:获取变量的值, target指的是项目名",
			"# 遍历获取src中所有cpp文件:file(GLOB My_Source_Files src/*.cpp)",
			"# file(GLOB My_Source_Files src/*.cpp)",
			"# add_executable(target ${My_Source_Files})",
			"",

			"# 为可执行文件链接共享库:target_link_lib(target library1 library2 ...),target指的是项目名",
			"# target_link_libraries(target library1)",
			"",

		],
		"description": "CMake framework"
	}

VSCode调试launch.json配置

这是学习过程中看到的launch.json文件的配置模板
launch文件是调试过程中用到的重要文件
其中的备注会慢慢补齐

注:20230810心得:选中主函数,点击任务栏的“运行”,“添加配置”,会出现一个launch.json,如下图,
在这里插入图片描述
点击右下角添加配置,选择C/C++:(gdb)启动
在这里插入图片描述
在编译好之后拿到可执行文件之后,
只需要将下图红框中的参数改成可执行文件位置就行。
在这里插入图片描述

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "g++ - 生成和调试活动文件", // 配置名称,显示在启动配置下拉菜单中
      "type": "cppdbg", //配置类型
      "request": "launch", //请求配置类型
      "program": "${workspaceFolder}/build/main", //代表的可执行文件的绝对路径
      "args": [], //传递给程序的命令行参数
      "stopAtEntry": false, //可选参数。如果为true,则调试程序应在目标的入口点处停止。如果床底了processId,则不起任何作用
      "cwd": "${workspaceFolder}", //cd到工程的顶层目录
      "environment": [], //要添加到程序中的环境变量{"name":"config","value":"Debug"}
      "externalConsole": false, //true:启动控制台;false:在vscode的集成的控制台显示
      "MIMode": "gdb", //调试方式
      //
      "setupCommands": [
        {
          "description": "为 gdb 启用整齐打印", //
          "text": "-enable-pretty-printing", //
          "ignoreFailures": true //
        }
      ],
      "preLaunchTask": "Build", //调试前作的一个task,联合tasks.json进行自动化编译后调试
      "miDebuggerPath": "/usr/bin/gdb" //调试程序的路径,要知道自己把调试程序安装到哪里了
    }
  ]
}

VSCode调试tasks.json配置

点击终端,配置任务,选择使用一个编译器生成任务文件,就会出来task.json

{
  "version": "0.2.0",
  "configurations": [
    {
            "type": "cppbuild",
            "label": "C/C++: g++-11 生成活动文件",
            "command": "/usr/bin/g++-11",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "# 放一些 -I include路徑和 -L 链接库路径 -l 库名称"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "编译器: /usr/bin/g++-11"
    }
  ]
}

launch和tasks配合可以实现自动化调试(不用手动编译)
luanch中的"preLaunchTask": “Build”
tasks中的"label": “Build”
只要名称一样就行,不一定是Build,有时候vscode自动生成的是"C/C++:g++生成活动文件"
只要这两个选项的名称一致就行了

  • 13
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值