大家好呀,我是程序员夏叶,深度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启动调试或者点击上图中左侧调试面板中的绿色按钮,进行调试。
- 调试时按键作用如下
-
- F5:继续执行
- F10:单步执行
- F11:单步进入
- Shift+F11:单步跳出
- Shift+F5:停止调试
- 调试面板中窗口作用如下
-
- 变量窗口:查看当前变量值
- 调用堆栈:查看函数调用链
- 断点窗口:管理所有断点
4.执行生成的程序
接下来我首先进行构建,使用快捷键ctrl+shift+B,然后可以看到下方终端中输出如下信息:
去查看项目目录,可以看到已经生成了目标程序out.exe,在trae的终端界面输入./out.exe
执行,就可以看到已经得到了我们想要的结果,如下:
其实,说白了,这种配置方式跟之前发的QT的配置差不多,它的原理就是利用.vscode
目录下的配置文件来执行不同的命令,本质上就是把命令行的方式自动化了。
说实话,我挺喜欢这种方式,我不用安装不同的IDE,也不用不时的切换IDE了。
还有一点就是,因为用的是g++编译器,对于习惯写linux下c++
代码,又不想成天开个虚拟机的同学而言,是一种比较好的方式,我也是第一次知道可以这么干,以前要写个小程序测试一下c++
的语法或者使用方式之类,还要跑到linux服务器上去,现在就简单多了。