C/C++:.c
.cpp
->编译器 -> .exe
(可执行文件)
VSCode
:编辑器,需配套编译器(winlibs…)
Visual studio
/ Code Blocks
/Pycharm
: IDE–编译器/解释器+一套完整的生产工具,可直接一键运行代码
看到的一句话: “小白的话,还是老老实实用ide,各种语言都有对应的,c/c++可以用 devc++,codeblocks, clion),vs(vc++,c#)。java,python用IntelliJ 全家桶。大家要明白,vscode永远只是一个编辑器,而且折腾环境配置极其消耗小白的学习意志。”
WinLibs - GCC+MinGW-w64 compiler for Windows
--Release versions-发行版本
--UCRT runtime-UCRT运行时: Win64/Win32选择合适的下载
ps:
1. 7-zip和zip区别:7-zip压缩效率高(10MB变1MB),但必须下载7-zip才能解压缩
zip虽大但软件要求不高。
2.- without LLVM/Clag/LLD/LLDB:意为没有以上编译器组件
(F 搜 :有github文件加速)
mingw32//bin
路径下,cmd
运行gcc --version
(c编译器)、g++ --version
(c++编译器)看解压是否成功
复制mingw32//bin
路径,打开系统环境变量
–path
–新建
,粘贴,确定
然后随便打开命令行(cmd)就可运行环境。
1. 创建一个cpp文件(eg:test.cpp
),在vscode输入可执行代码,还不能运行。
2. 找到电脑中cpp文件路径,cmd
打开,输入代码“g++ test.cpp -o test.exe
”1
3. 编译完成,生成可执行文件.exe
cpp文件处,不仅有代码文件test.cpp
,还有.vscode
文件夹(vscode创建)里面有.json
文件(指导vscode处理用户写的代码)
打开vscode,若先前已有.vscode
文件,需删除。
然后必须在.cpp文件处(即代码界面) 按F5
选择环境–c++(GDB/LLDB)
2,即会创建一个launch.json
文件(还不行)
此时的vscode可能没识别安装的gcc编译器,需要重启vscode,再按F5
选择环境–g++.exe-生成和测试活动文件
即可运行3 也会创建一个launch.json
文件。
ps:选中哪个源文件按F5
就会生成哪个.exe.文件
launch.json就是通过 preLaunchTask
来匹配tasks.json里面的任务
'name'
:在vscode界面右下角显示名称(eg:g++.exe-生成和测试活动文件)
'type'
:显示配置类型(eg:cppdbg4)–暂时不管
'request'
:表示启动或附加,用于调试–暂时不管
'program'
:表示调试的环境,即程序可执行的完整路径
eg: test.cpp
源文件会生成 test.exe
可执行文件,program
按路径识别要执行的文件test.exe
(给什么文件运行什么文件)“C\…\demo\Cpp\test.exe”
fileDirname
:vscode的宏,在运行时会被替换,替换它后面给的文件(test.exe
)所在文件夹的路径(eg:C\…\demo\Cpp)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nig8o4HW-1675052060980)(C:\Users\KKH\AppData\Roaming\Typora\typora-user-images\image-20230129151223570.png)]
fileBasenameNoExtension
:vscode的宏,vscode打开哪个源文件,fileBasenameNoExtension
就会被替换成此源文件的名(test)
ps:"NoExtension"表示没有扩展名5,所以test没有.exe
'externalConsole'
:若为false
,即会用vscode的集成终端输出;若为true
,则会用系统的集成终端输出(”弹窗“,要自己叉掉)
'miDebuggerPath'
:表示调试器6的路径,即gdb.exe
的路径
ps:
1)单步调试:在哪一行打断点,程序运行时就会停在那行(断点那行也不执行)不执行后面的代码,再按F10
时继续运行。
2)若调试时,提示报错无法调试,则看看'miDebuggerPath'
有无拼写错误等,有的调试器不叫"gdb.exe"
'preLaunchTask'
:调试会话开始前要运行的任务,即调试.exe
应用程序之前,告诉vscode要什么
eg:program
启动**.exe
文件->miDebuggerPath
用调试器调试->externalConsole
->判断是否用外部的控制台(系统的集成终端)
tasks.json作用:启动g++
'label'
:内容和’preLaunchTask’一样,用于让launch.json
匹配
'command'
:运行cmd,并输入其后面的路径(eg:C:\\ming32\\bin\\g++.exe
),准备运行g++编译器
'args'
:
-g:就是负责调试功能。一定要有,若没有断点会失效7打了断点也会继续执行下面。
file
:宏,运行时会替换为所运行的源文件名(eg:test.exe
)
-o
fileDirname
、fileBasenameNoExtension
含义同launch中的。
2.3结合,相当于**手动编译文件(麻烦)**中操作2:找到电脑中cpp文件路径,cmd
打开,输入代码“g++ test.cpp -o test.exe
”
如果只是单文件配置,当想多文件运行时会报错(eg:test.cpp
调用hello.cpp
中的PrintHello
函数,会报错找不到),因为一次只编译运行了一个源文件。
//test.cpp
#include
#include
void PrintHello();//声明函数
int main(){
PrintHello();//调用函数
system("pause");
return 0;
}
//hello.cpp
#include
void PrintHello(){
printf("hello\n");
}
eg:“g++ test.cpp -o test.exe
”应加上hello.cpp
变为“g++ test.cpp hello.cpp -o test.exe
”–两文件一起编译,并链接成一个test.exe
文件
在 tasks.json
-> file–原先只会被替换为一个源文件名(test.cpp
),现需自己(另起一行)补其他文件名(hello.cpp
)
下载工具CMake
Download | CMake
–Binary distributions:
--Windows x64 ZIP(推荐) / Windows x64 Installer
ps:软件有ZIP包的话建议使用ZIP包,比安装程序(Installer)更加绿色无广
打开cmake程序(.exe)所在路径,cmd
运行输入代码cmake
查看是否成功安装
配置环境变量
打开vscode搜索插件cmake并安装(cmake8、cmake tools9两个都要安装)
创建cmake文件,百度一下教程
编译器将hello.cpp
、test.cpp
编译为二进制文件hello.o
、test.o
再链接为一个test.exe
文件
test.cpp
文件,其中void PrintHello();
正确声明了PrintHello()
函数并调用,语句没有问题,所以成功编译为二进制文件hello.o
g++ test.cpp -o test.exe
”就是只将 test.cpp
变为了 test.o
然后直接链接为 test.exe
,忽略 hello.cpp
,此时程序中PrintHello()
函数只有声明没有定义。g++ test.cpp:告诉g++编译器要运行那个文件;-o test.exe:告诉g++编译器要输出什么 ↩︎
先前下载的g++、gcc编辑器对应的环境 ↩︎
json等配置文件起作用 ↩︎
表示配置类型为g++类型 ↩︎
“.exe”,".cpp"之类 ↩︎
负责完成调试操作 ↩︎
g++不会为断点代码
↩︎
功能:打相关脚本代码时会有提示 ↩︎
更重要。功能:将cmake的一些终端命令变为vscode的UI的点击按钮 ↩︎