【Trae】如何使用Trae编译C++(附带MinGW)

【Trae】如何使用Trae编译C++(附带MinGW)

结果

先看结果
这是一道回文串题目,F5编译,控制台输入输出。

在这里插入图片描述

下载

  • 下载Trae编译器,直接去官网下:https://www.trae.cn/
  • 下载VSCode编译器,这个相信用Trae的各位都不陌生。https://code.visualstudio.com/
    • 查看你的C盘,C:\Users\Administrator\.vscode\extensions路径下是否有extensions.json文件,如果没有,请将VSCode卸载后重装。

安装插件

在VSCode里安装“C/C++”插件。

在这里插入图片描述


这里需要在VSCode里安装的原因是C/C++插件在Trae里是搜不到的。
再次查看C:\Users\Administrator\.vscode\extensions路径,看看插件是否安装成功,且extensions.json文件里有这个插件。

在这里插入图片描述
在这里插入图片描述


关闭VSCode,打开Trae。
点击右上角头像-IDE设置

在这里插入图片描述


选择“从VSCode导入”,等待它导入插件,导入完成后点击查看一下,是不是下载的那些插件。

在这里插入图片描述

编译

新建一个文件夹,用Trae打开,再在里面新建一个cpp文件,输入一段HelloWorld代码。

在这里插入图片描述


会看到自动生成了一个.vscode文件夹。
在这里按F5运行,如果运行成功,会出现如下所示。

在这里插入图片描述


如果运行失败,请进行如下配置。
下载MinGW并安装到D盘(傻瓜式教学,跟着安就行,除非你知道要修改的json里每个参数的意义)
这里我贴心地给大家建了项目。
https://gitcode.com/qq_36286039111111111111111mq8/MyMinGW.git
把这个项目拉下来,MinGW放到D盘,bin文件夹的路径如下所示。

在这里插入图片描述


并且在环境变量的PATH里配置这个bin文件夹(相信各位对PATH都很熟悉)

在这里插入图片描述


接下来来到Trae,找到那个.vscode文件夹
c_cpp_properties.json

{{"configurations":[{"name":"windows-gcc-x64","includePath":["${workspaceFolder}/**"],"compilerPath":"D:/MinGW/bin/gcc.exe","cStandard":"${default}","cppStandard":"${default}","intelliSenseMode":"windows-gcc-x64","compilerArgs":[""],"browse":{"limitSymbolsToIncludedHeaders":true,"databaseFilename":"","path":["${workspaceFolder}/**","D:/mingw/include/**","D:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++","D:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32","D:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward","D:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include","D:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed","D:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include"]}}],"version":4}}

launch.json

{"version":"0.2.0","configurations":[{"name":"(gdb) Launch","type":"cppdbg","request":"launch","program":"${workspaceFolder}/exe/${fileBasenameNoExtension}.exe","args":[],"stopAtEntry":false,"cwd":"${workspaceFolder}","environment":[],"externalConsole":false,"MIMode":"gdb","miDebuggerPath":"D:/MinGW/bin/gdb.exe","preLaunchTask":"g++","setupCommands":[{"description":"Enable pretty-printing for gdb","text":"-enable-pretty-printing","ignoreFailures":true}]},{"name":"C/C++ Runner: Debug Session","type":"cppdbg","request":"launch","args":[],"stopAtEntry":false,"externalConsole":true,"cwd":"i:/work/MyGit/MyCpp_Git","program":"i:/work/MyGit/MyCpp_Git/build/Debug/outDebug","MIMode":"gdb","miDebuggerPath":"gdb","setupCommands":[{"description":"Enable pretty-printing for gdb","text":"-enable-pretty-printing","ignoreFailures":true}]}]}

settings.json 这个不一定需要,但我还是放在这里

{"C_Cpp_Runner.cCompilerPath":"gcc","C_Cpp_Runner.cppCompilerPath":"g++","C_Cpp_Runner.debuggerPath":"gdb","C_Cpp_Runner.cStandard":"","C_Cpp_Runner.cppStandard":"","C_Cpp_Runner.msvcBatchPath":"","C_Cpp_Runner.useMsvc":false,"C_Cpp_Runner.warnings":["-Wall","-Wextra","-Wpedantic","-Wshadow","-Wformat=2","-Wcast-align","-Wconversion","-Wsign-conversion","-Wnull-dereference"],"C_Cpp_Runner.msvcWarnings":["/W4","/permissive-","/w14242","/w14287","/w14296","/w14311","/w14826","/w44062","/w44242","/w14905","/w14906","/w14263","/w44265","/w14928"],"C_Cpp_Runner.enableWarnings":true,"C_Cpp_Runner.warningsAsError":false,"C_Cpp_Runner.compilerArgs":[],"C_Cpp_Runner.linkerArgs":[],"C_Cpp_Runner.includePaths":[],"C_Cpp_Runner.includeSearch":["*","**/*"],"C_Cpp_Runner.excludeSearch":["**/build","**/build/**","**/.*","**/.*/**","**/.vscode","**/.vscode/**"],"C_Cpp_Runner.useAddressSanitizer":false,"C_Cpp_Runner.useUndefinedSanitizer":false,"C_Cpp_Runner.useLeakSanitizer":false,"C_Cpp_Runner.showCompilationTime":false,"C_Cpp_Runner.useLinkTimeOptimization":false,"C_Cpp_Runner.msvcSecureNoWarnings":false,"files.associations":{"cctype":"cpp","cmath":"cpp","cstdarg":"cpp","cstdint":"cpp","cstdio":"cpp","cstdlib":"cpp","type_traits":"cpp","limits":"cpp","typeinfo":"cpp","iostream":"cpp"},"terminal.integrated.suggest.enabled":true}

tasks.json 这个文件不一定需要,但我还是放在这里。
注意像我这样配置需要在项目目录下新建一个名为exe的文件夹,用于存储编译过后的文件。

{"version":"2.0.0","command":"g++","args":["-g","${file}","-o","${workspaceFolder}/exe/${fileBasenameNoExtension}.exe"],"problemMatcher":{"owner":"cpp","fileLocation":["relative","\\"],"pattern":{"regexp":"^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$","file":1,"line":2,"column":3,"severity":4,"message":5}},"tasks":[{"type":"cppbuild","label":"g++","command":"D:/MinGW/bin/g++.exe","args":["-fdiagnostics-color=always","-g","${file}","-o","${workspaceFolder}/exe/${fileBasenameNoExtension}.exe",""],"options":{"cwd":"D:/MinGW/bin"},"problemMatcher":["$gcc"],"group":{"kind":"build","isDefault":true},"detail":"调试器生成的任务。"}]}

至此再去尝试编译,一般没什么大问题 ,报什么错就去解决一下就好了。

QA

  1. 如果控制台能编译成功就是不能输入数据怎么办?
    我遇到了之后是MinGW版本问题,把原本的MinGW删了,装我在文章里给的那个。
  2. 报错找不到g++?
    PATH没配置。

Read more

优选算法——二分查找

👇作者其它专栏 《数据结构与算法》《算法》《C++起始之路》 二分查找相关题解 1.二分查找 算法思路: a.定义left,right指针,分别指向数组的左右区间。 b.找到待查找区间的中间点mid,找到后分三种情况讨论:         i.arr[mid]==target说明正好找到,返回mid的值;         ii.arr[mid]>target说明[mid,right]这段区间都是大于target的,因此舍去右边区间,在左边[left,mid-1]的区间继续查找,即让right=mid-1,然后重复b过程;         iii.arr[mid]<target说明[left,mid]这段区间的值都是小于target的,因此舍去左边区间,在右边区间[mid+1,right]

By Ne0inhk

优选算法——链表

💁‍♂️个人主页:进击的荆棘 👇作者其它专栏: 《数据结构与算法》《算法》《C++起始之路》 相关题解 1.两数相加 算法思路(模拟): 两个链表都是逆序存储数字的,即两个链表的个位数、十位数等都已经对应,可以直接相加。在相加过程中,我们要注意是否产生进位,产生进位时需要将进位和链表数字一同相加。若产生进位的位置在链表底部,即答案位数比原链表位数长一位,还需要再new一个结点存储最高位。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(

By Ne0inhk
【数据结构与算法】指针美学与链表思维:单链表核心操作全实现与深度精讲

【数据结构与算法】指针美学与链表思维:单链表核心操作全实现与深度精讲

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人等方向学习者 ❄️个人专栏:《C语言》《【初阶】数据结构与算法》 ✨ 永远相信美好的事情即将发生 文章目录 * 前言 * 一、查找 * 二、指定位置之前或之后插入元素 * 2.1 在指定位置之前 * 2.2 在指定位置之后 * 三、指定位置删除或指定位置之后删除 * 3.1 在指定位置 * 3.2 指定位置之后 * 四、代码展现 * 4.1 SList.h * 4.2 SList.c * 4.3 test.c * 五、顺序表和链表的区别 * 总结与每日励志 前言

By Ne0inhk