在ubuntu下使用vscode打开c++的make项目及编译调试
-
-
- 第一步:安装必要的软件
- 第二步:示例项目准备
-
- [1. 创建C++源文件: main.cpp](#1. 创建C++源文件: main.cpp)
- [2. 创建头文件: utils.h](#2. 创建头文件: utils.h)
- [3. 创建实现文件: utils.cpp](#3. 创建实现文件: utils.cpp)
- [第三步:使用 VS Code 打开项目](#第三步:使用 VS Code 打开项目)
- 第四步:配置编译任务 (Tasks.json)
- 如何使用:
- 第五步:配置调试环境 (Launch.json)
- 第六步:编译和调试
-
在ubuntu下使用vscode打开c++的make项目及编译调试
第一步:安装必要的软件
打开终端 (Ctrl+Alt+T),运行以下命令以确保所有必要的工具都已安装。
bash
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
bash
g++ --version
make --version
gdb --version
如果这些命令都输出了版本信息,说明工具链已正确安装。
第二步:示例项目准备
为了演示,我们创建一个简单的示例项目。如果您已有项目,可以跳过此步。
在您喜欢的位置(例如 ~/Documents/)创建一个新目录并生成文件:
bash
bash
mkdir my_make_project
cd my_make_project
1. 创建C++源文件: main.cpp
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
cpp
#ifndef UTILS_H
#define UTILS_H
namespace utils {
void printMessage(const char* message);
int add(int a, int b);
}
#endif
3. 创建实现文件: utils.cpp
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
这是最关键的一步,它定义了如何编译项目。
powershell
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++ 语言标准。
现在您的项目结构应如下所示:
xml
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
javascript
{
"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
javascript
{
"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 中的参数,但核心配置思路是完全一致的。