拒绝切换IDE,10分钟让Trae编辑器化身C++神器,智能补全、编译调试一网打尽

大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。

今天说一下我的老本行c++,怎么在trae中配置单纯的c++开发和编译环境呢,以windows系统为例。

1.下载和安装Mingw工具,用来编译c++代码

首先打开如下网站:winlibs.com/

该网站中有很多mingw的版本,自己选择一个即可:

我选择下载了最新的版本,也就是mingw12.0.0-r3的版本,下载下来是压缩包,7z格式或者zip格式的都有,我下载的是zip格式,解压以后里面是一个名为mingw64的目录,点击进去,内容如下:

点击bin目录进去,可以看到里面有g++.exe,gcc.exe,gdb.exe编译和调试程序都包含在内,包括还有mingw32-make.exe,这个是用于解释执行makefile文件的程序,然后我们把整个mingw64目录放到一个适当的路径,比如我这里放到D:\x86_64-gcc-14.2.0-mingw-12.0.0-r3目录下,那么整个mingw64的目录就是D:\x86_64-gcc-14.2.0-mingw-12.0.0-r3\mingw64

2.生成一段测试代码

接下来建立一个名为test-c++的空文件夹,然后打开trae,点击选择项目->打开文件夹,打开刚刚新建好的文件夹,如下:

这样就新建好了一个名为test-c++的新项目。

然后在trae的右侧,选择build模式,输入一个简单的描述,让trae帮我们生成一段简单的c++代码,如下:然后trae帮我生成一个main.cpp文件,内容如下:

c 复制代码
#include <iostream>
#include <string>

int main() {
    std::string name;
    std::string phone;

    // 提示并获取用户输入
    std::cout << "请输入姓名: ";
    std::getline(std::cin, name);

    std::cout << "请输入电话号码: ";
    std::getline(std::cin, phone);

    // 输出信息
    std::cout << "\n输入的信息如下:" << std::endl;
    std::cout << "姓名:" << name << std::endl;
    std::cout << "电话:" << phone << std::endl;

    return0;
}

3.trae自动生成编译和构建文件

接下来继续要求trae生成makefile文件、构建和调试的配置文件,在build模式下输入如下一段话:接下来我还想让你帮我做几件事: 1.生成一个简单的makefile文件,用于编译main.cpp 2.生成构建和调试的配置文件,使用mingw工具链进行构建和调试,mingw工具链路径如下:D:\x86_64-gcc-14.2.0-mingw-12.0.0-r3\mingw64\bin,因为我安装了多个不同版本的mingw,所以配置文件中麻烦你使用我指定的路径

然后trae就生成了如下的3个文件:

虽说生成了这些文件,但是trae不一定可以一次成功,中间有可能会报错,所以可能需要多次微调,多次处理才会成功。

下面是我可以正确编译并运行的makefile及构建调试配置文件,下面我贴出来代码,如下:

makefile 复制代码
# 编译器设置,因为我电脑安装了多个版本的mingw套件,所以必须要指定路径
CXX = D:/x86_64-gcc-14.2.0-mingw-12.0.0-r3/mingw64/bin/g++.exe

# 编译选项,windows中必须要链接静态库或者运行时指定动态库路径,因为我安装了多个不同版本的mingw,所以必须在这里指定静态库和路径
CXXFLAGS = -g -Wall -static-libstdc++ -fexec-charset=GBK
LDFLAGS = -LD:/x86_64-gcc-14.2.0-mingw-12.0.0-r3/mingw64/lib

# 目标文件
TARGET = out.exe

# 源文件
SRCS = main.cpp

# 默认目标
all: $(TARGET)

# 编译规则
$(TARGET): $(SRCS)
$(CXX)$(CXXFLAGS)$(LDFLAGS) -o $@$^

# 清理规则
clean:
 del $(TARGET)

注意看makefile里面的注释,里面的g++程序路径、静态链接库路径必须要正确。

接下来是.vscode/tasks.json,内容如下:

bash 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "D:/x86_64-gcc-14.2.0-mingw-12.0.0-r3/mingw64/bin/mingw32-make.exe",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "always",
                "panel": "new"
            },
            "problemMatcher": [
                "$gcc"
            ]
        },
        {
            "label": "clean",
            "type": "shell",
            "command": "D:/x86_64-gcc-14.2.0-mingw-12.0.0-r3/mingw64/bin/mingw32-make.exe",
            "args": ["clean"],
            "presentation": {
                "reveal": "always",
                "panel": "new"
            }
        }
    ]
}

tasks.json配置好了以后就可以构建了,构建方式如下:

  • 使用 ctrl+shift+B 触发构建或者ctrl + shift + p -->run task --> make 来触发构建
  • ctrl + shift + p -->run task --> clean 来触发清除的动作

接下来是调试文件.vscode/launch.json,内容如下:

bash 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/out.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:/x86_64-gcc-14.2.0-mingw-12.0.0-r3/mingw64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build"
        }
    ]
}

注意调试配置文件里面目标文件名称和gdb.exe的路径一定要配置正确

调试文件配置号以后,首先可以设置断点,如下:

然后按F5启动调试或者点击上图中左侧调试面板中的绿色按钮,进行调试。

  1. 调试时按键作用如下
    • F5:继续执行
    • F10:单步执行
    • F11:单步进入
    • Shift+F11:单步跳出
    • Shift+F5:停止调试
  2. 调试面板中窗口作用如下
    • 变量窗口:查看当前变量值
    • 调用堆栈:查看函数调用链
    • 断点窗口:管理所有断点

4.执行生成的程序

接下来我首先进行构建,使用快捷键ctrl+shift+B,然后可以看到下方终端中输出如下信息:

去查看项目目录,可以看到已经生成了目标程序out.exe,在trae的终端界面输入./out.exe执行,就可以看到已经得到了我们想要的结果,如下:

其实,说白了,这种配置方式跟之前发的QT的配置差不多,它的原理就是利用.vscode目录下的配置文件来执行不同的命令,本质上就是把命令行的方式自动化了。

说实话,我挺喜欢这种方式,我不用安装不同的IDE,也不用不时的切换IDE了。

还有一点就是,因为用的是g++编译器,对于习惯写linux下c++代码,又不想成天开个虚拟机的同学而言,是一种比较好的方式,我也是第一次知道可以这么干,以前要写个小程序测试一下c++的语法或者使用方式之类,还要跑到linux服务器上去,现在就简单多了。

相关推荐
achene_ql7 小时前
select、poll、epoll 与 Reactor 模式
linux·服务器·网络·c++
Georgewu8 小时前
【ModelArts】ModelArts一站式AI开发平台详解(一)
aigc·openai·ai编程
Georgewu8 小时前
【HarmonyOS 5】鸿蒙CodeGenie AI辅助编程工具详解
华为·ai编程·harmonyos
SY师弟9 小时前
51单片机——计分器
c语言·c++·单片机·嵌入式硬件·51单片机·嵌入式
黑码哥9 小时前
Copilot for Xcode (iOS的 AI辅助编程)
人工智能·copilot·ai编程·xcode·ai辅助编程
豪斯有话说10 小时前
C++_哈希表
数据结构·c++·散列表
real_metrix11 小时前
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
c++·迭代器·迭代器失效·erase
朝朝又沐沐11 小时前
基于算法竞赛的c++编程(18)string类细节问题
开发语言·c++·算法
coder_pig11 小时前
【Trae + 掘金MCP】不写代码,靠嘴遁花0.5h定制公号排版工具
aigc·mcp·trae
a.30212 小时前
C++ 时间处理指南:深入剖析<ctime>库
数据结构·c++·算法