赞
踩
refer : chatgpt
前面记录了通过GNU套件以及CMAKE配置文件进行C/C++代码的编译调试, 本文记录基于VSCode IDE搭建C/C++开发环境, 以实现更优雅的ctrl c/v.
在 Visual Studio Code 中, task.json
和 launch.json
是两种不同的配置文件,用于配置不同的功能。
task.json
文件用于配置任务(Tasks)。任务是指在 Visual Studio Code 中执行的一系列操作,通常用于构建、运行、测试等操作。task.json
文件来定义并配置你的任务,然后在 Visual Studio Code 中执行这些任务。task.json
文件用于配置构建任务,例如使用 CMake 构建项目、使用 Makefile 构建项目、运行测试等。launch.json
文件用于配置调试器(Debugger)的启动配置。launch.json
文件来定义并配置你的调试器启动配置,以便在 Visual Studio Code 中启动调试器并调试你的程序。launch.json
文件用于配置如何启动和调试你的代码,例如调试 C++ 程序、Node.js 应用程序、Python 脚本等。总的来说,task.json
用于配置任务,而 launch.json
用于配置调试器启动配置。你可以根据需要在这两个文件中定义和配置适合你的项目的任务和调试器启动配置,以便在 Visual Studio Code 中执行构建任务和调试你的代码。
.
├── include
│ └── functions.h
└── src
├── helloworld.cpp
├── main.cpp
└── sum.cpp
2 directories, 4 files
#include <iostream>
#include "functions.h"
using namespace std;
int main(){
helloworld();
cout<<"sum = "<<sum(12,11)<<endl;
return 0;
}
#include <iostream>
#include "functions.h"
using namespace std;
void helloworld()
{
cout<<"hello world!"<<endl;
}
#include "functions.h"
int sum(int a,int b)
{
return a + b;
}
#ifndef _FUNCTIONS_H_
#define _FUNCTIONS_H_
void helloworld();
int sum(int a,int b);
#endif
将会自动生成一个task.json文件模板,需要我们对参数进行修改
"tasks": [ { "type": "cppbuild", "label": "C/C++: g++ 生成活动文件", "command": "/usr/bin/g++", // 主要更改args参数 "args": [ "-fdiagnostics-color=always", "-g", "-I", "${workspaceFolder}/include", "${workspaceFolder}/src/*.cpp", "-o", // 这决定了可执行文件的输出位置,后面laucnh.json会用到 "${workspaceFolder}/bin/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "调试器生成的任务。" } ], "version": "2.0.0" }
在这个配置中:
"args"数组包含了传递给g++的参数,其中:
通过这些修改,任务将在src目录中查找所有的.cpp文件,并在include目录中查找头文件,然后将生成的可执行文件放置在bin目录中,其名称与源文件的基本名称相同。
然后会自动生成launch.json文件
选择添加配置c/c++ : (gdb) 启动
自动生成以下代码
{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", // 更改启动路径,刚才在task.json文件中将执行文件生成在了bin文件目录下 "program": "${workspaceFolder}/bin/main", "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 } ], // 执行前先执行task进行编译, 确保launch最新代码结果,也可以不加 "preLaunchTask": "C/C++: g++ 生成活动文件" } ] }
CTRL + SHIFT + P 输入命令 : 编辑配置(UI)
在包含路径中添加:${workspaceFolder}/include
ctrl + shift + b 进行build
f5 启动调试器
和前面大致相同,需要新创建一个CMakeLists.txt的CMake配置文件,需要注意的是,该文件需要与include、src平行。
cmake_minimum_required(VERSION 3.10)
project(main)
include_directories(include)
add_executable(main src/main.cpp src/helloworld.cpp src/sum.cpp)
文件结构:
├── CMakeLists.txt
├── include
│ └── functions.h
└── src
├── helloworld.cpp
├── main.cpp
└── sum.cpp
然后用VSCode打开后,会自动弹出如下配置窗口,选择箭头所指选项,将自动生成一个build文件夹存放相关配置文件。
配置后的文件结构:
此时通过终端可以执行cmake并输出可执行文件,但不够优雅,继续通过task.json和launch.json进行配置
按如下进行配置,会生成一个task.json.
然后通过ctrl + shift + b进行编译,结果保存在build文件夹下,说明编译可以顺利执行。
按如下方式生成launch.json文件。
替换为如下代码:
{ "version": "0.2.0", "configurations": [ { "type": "cppdbg", "name": "Debug CMake Executable", "request": "launch", "program": "${workspaceFolder}/build/main", // 替换为你的可执行文件路径 "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], // 执行前先执行task的编译内容 "preLaunchTask": "CMake: 清理重新生成" } ] }
f5 编译运行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。