【在ubuntu下使用vscode打开c++的make项目及编译调试】
在ubuntu下使用vscode打开c++的make项目及编译调试
- 第一步:安装必要的软件
- 第二步:示例项目准备
- 1. 创建C++源文件: main.cpp
- 2. 创建头文件: utils.h
- 3. 创建实现文件: utils.cpp
- 第三步:使用 VS Code 打开项目
- 第四步:配置编译任务 (Tasks.json)
- 如何使用:
- 第五步:配置调试环境 (Launch.json)
- 第六步:编译和调试
在ubuntu下使用vscode打开c++的make项目及编译调试
第一步:安装必要的软件
打开终端 (Ctrl+Alt+T),运行以下命令以确保所有必要的工具都已安装。
bash
# 1. 更新软件包列表
sudo apt update# 2. 安装编译工具链 (g++, gdb, make)
sudo apt install build-essential gdb# 3. 安装 VS Code
# 如果尚未安装,可以从 Snap 安装(最简单)
sudo snap install --classic code
# 或者从微软官方仓库安装,具体方法请参考微软官网
验证安装:
bash
g++ --version
make --version
gdb --version
如果这些命令都输出了版本信息,说明工具链已正确安装。
第二步:示例项目准备
为了演示,我们创建一个简单的示例项目。如果您已有项目,可以跳过此步。
在您喜欢的位置(例如 ~/Documents/)创建一个新目录并生成文件:
bash
mkdir my_make_project
cd my_make_project
1. 创建C++源文件: main.cpp
cpp
#include <iostream>
#include "utils.h"int main() {std::cout << "Hello from the main program!" << std::endl;utils::printMessage("This is a message from the utils module.");int result = utils::add(5, 3);std::cout << "The result of addition is: " << result << std::endl;return 0;
}
2. 创建头文件: utils.h
cpp
#ifndef UTILS_H
#define UTILS_Hnamespace utils {void printMessage(const char* message);int add(int a, int b);
}#endif
3. 创建实现文件: utils.cpp
cpp
#include "utils.h"
#include <iostream>namespace utils {void printMessage(const char* message) {std::cout << "Message: " << message << std::endl;}int add(int a, int b) {return a + b;}
}
- 创建 Makefile
这是最关键的一步,它定义了如何编译项目。
makefile
# 编译器设置
CXX := g++
CXXFLAGS := -Wall -g -std=c++11# 目标可执行文件名称
TARGET := myapp# 源文件和对象文件
SRCS := main.cpp utils.cpp
OBJS := $(SRCS:.cpp=.o)# 默认目标:编译所有
all: $(TARGET)# 链接目标文件生成可执行文件
$(TARGET): $(OBJS)$(CXX) $(CXXFLAGS) -o $@ $^# 编译 .cpp 文件为 .o 文件
%.o: %.cpp$(CXX) $(CXXFLAGS) -c $< -o $@# 清理生成的文件
clean:rm -f $(OBJS) $(TARGET)# 声明伪目标,防止有同名文件时出错
.PHONY: all clean
关键点:
-g:在可执行文件中包含调试信息,这是调试所必需的。
-Wall:开启大多数警告。
-std=c++11:指定 C++ 语言标准。
现在您的项目结构应如下所示:
text
my_make_project/
├── main.cpp
├── utils.h
├── utils.cpp
└── Makefile
第三步:使用 VS Code 打开项目
- 打开 VS Code。
- 点击 File -> Open Folder…。
- 选择您刚刚创建的 my_make_project 文件夹并点击 Open。
VS Code 现在将把这个文件夹作为您的工作区。
第四步:配置编译任务 (Tasks.json)
VS Code 可以使用任务 (Tasks) 来调用外部命令,比如 make。
- 打开命令面板:Ctrl+Shift+P。
- 输入并选择 Tasks: Configure Task。
- 接着选择 Create tasks.json file from template。
- 然后选择 Others 来创建一个通用模板。
VS Code 会在项目根目录下创建一个 .vscode 文件夹,并在其中生成一个 tasks.json 文件。用以下内容替换该文件:
json
{"version": "2.0.0","tasks": [{"label": "Build with Make", // 任务的自定义名称"type": "shell","command": "make", // 或 "cd ./linux64/proj && make" 直接在 shell 中运行的命令"group": {"kind": "build","isDefault": true // 将此任务设为默认生成任务},"presentation": {"echo": true,"reveal": "always", // 总是显示输出窗口"focus": false,"panel": "shared"},"problemMatcher": "$gcc" // 使用 GCC 的问题匹配器来捕捉错误和警告},{"label": "Clean with Make","type": "shell","command": "make", // 或 "cd ./linux64/proj && make""args": ["clean"] // 执行 `make clean` 命令}]
}
如何使用:
编译:按 Ctrl+Shift+B。因为我们将任务设置为默认生成任务,所以这会直接运行 make。
清理:打开命令面板 (Ctrl+Shift+P),输入 Tasks: Run Task,然后选择 Clean with Make。
第五步:配置调试环境 (Launch.json)
这是设置调试的关键。
- 点击 VS Code 左侧活动栏的 “运行和调试” 图标(或按 Ctrl+Shift+D)。
- 点击 “创建一个 launch.json 文件”。
- 在弹出的环境中,选择 C++ (GDB/LLDB)。
同样,VS Code 会在 .vscode 文件夹下创建 launch.json 文件。用以下内容替换:
json
{"version": "0.2.0","configurations": [{"name": "(gdb) Launch", // 配置的名称"type": "cppdbg","request": "launch","program": "${workspaceFolder}/lib/sdtTest", // 需要调试的程序路径"args": [], // 传递给程序的命令行参数"stopAtEntry": false,"cwd": "${workspaceFolder}/lib", // 工作目录 必须跟上部“调试的程序路径”一致"environment": [],"externalConsole": false, // 使用 VS Code 的内置终端"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "Build with Make" // 在启动调试前先执行的任务}]
}
关键配置解释:
“program”: 必须与您的 Makefile 中 TARGET 的名字一致。这里是 myapp。
“preLaunchTask”: 必须与 tasks.json 中定义的编译任务的 “label”(这里是 “Build with Make”)一致。这确保了每次开始调试时,VS Code 都会先自动重新编译项目(如果源代码有改动)。
第六步:编译和调试
现在一切就绪!
编译:按 Ctrl+Shift+B。您会在终端看到 make 命令的输出。如果编译成功,将生成 myapp 可执行文件。
设置断点:在代码编辑器中,在您想暂停执行的行号左侧点击鼠标(例如在 main.cpp 的第 6 行 std::cout… 旁边点击),会出现一个红点。
开始调试:按 F5 或点击“运行和调试”视图中的绿色播放按钮。
VS Code 会首先自动执行 “Build with Make” 任务来编译代码。
然后启动调试器,程序会在您设置的断点处暂停。
调试控制:
- Step Over (F10):执行下一行代码。
- Step Into (F11):进入函数内部。
- Step Out (Shift+F11):跳出当前函数。
- Continue (F5):继续运行直到下一个断点。
- 左侧调试窗口可以查看变量、调用堆栈和监视表达式。
总结
通过以上步骤,您已经在 Ubuntu 上的 VS Code 中成功配置了一个基于 Makefile 的 C++ 项目的完整开发环境,包括:
- 一键编译 (Ctrl+Shift+B)
- 一键调试 (F5),并支持断点、单步执行、变量查看等所有现代调试功能。
这个工作流对于绝大多数中小型 C/C++ 项目来说都非常高效。对于更复杂的项目,您可能需要调整 Makefile 和 tasks.json 中的参数,但核心配置思路是完全一致的。