【在ubuntu下使用vscode打开c++的make项目及编译调试】

在ubuntu下使用vscode打开c++的make项目及编译调试

在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;
    }
}
  1. 创建 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 打开项目
  1. 打开 VS Code。
  2. 点击 File -> Open Folder...
  3. 选择您刚刚创建的 my_make_project 文件夹并点击 Open

VS Code 现在将把这个文件夹作为您的工作区。

第四步:配置编译任务 (Tasks.json)

VS Code 可以使用任务 (Tasks) 来调用外部命令,比如 make

  1. 打开命令面板:Ctrl+Shift+P
  2. 输入并选择 Tasks: Configure Task
  3. 接着选择 Create tasks.json file from template
  4. 然后选择 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)

这是设置调试的关键。

  1. 点击 VS Code 左侧活动栏的 "运行和调试 " 图标(或按 Ctrl+Shift+D)。
  2. 点击 "创建一个 launch.json 文件"。
  3. 在弹出的环境中,选择 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" : 必须与您的 MakefileTARGET 的名字一致。这里是 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++ 项目的完整开发环境,包括:

  1. 一键编译 (Ctrl+Shift+B)
  2. 一键调试 (F5),并支持断点、单步执行、变量查看等所有现代调试功能。

这个工作流对于绝大多数中小型 C/C++ 项目来说都非常高效。对于更复杂的项目,您可能需要调整 Makefiletasks.json 中的参数,但核心配置思路是完全一致的。

相关推荐
愚昧之山绝望之谷开悟之坡1 小时前
| `cat /etc/os-release` | 发行版详细信息(如 Ubuntu、CentOS) |
linux·ubuntu·centos
让我们一起加油好吗3 小时前
【C++】多态(详解)
c++·visualstudio·多态·虚函数
草莓熊Lotso3 小时前
【C++】--函数参数传递:传值与传引用的深度解析
c语言·开发语言·c++·其他·算法
秋天枫叶353 小时前
【AI应用】修改向量数据库Milvus默认密码
运维·服务器·数据库·ubuntu·milvus·milvus_cli
zylyehuo4 小时前
C++提高编程
c++
scx201310044 小时前
20250822 组题总结
c++·算法
困鲲鲲5 小时前
CMake2: CMakeLists.txt的常用命令
c++·cmake·常用命令
云边有个稻草人5 小时前
【C++】第二十五节—C++11 (上) | 详解列表初始化+右值引用和移动语义
c++·c++11·右值引用·移动语义·列表初始化·移动构造·移动赋值
源代码•宸6 小时前
网络流量分析——基础知识(二)(Tcpdump 基础知识)
运维·开发语言·网络·c++·经验分享·tcpdump