个人感觉编写代码、编译、运行、调试都很舒服,而且适配多文件的项目。
操作系统为win11,首先安装wsl(ubuntu20.04),然后安装好必要的工具,最后在windows中使用vscode远程连接wsl。
文章目录
1. 安装WSL
首先在 控制面板->程序->启用或关闭Windows功能 中打开Hyper-V、Windows虚拟机监控程序平台、适用于Linux的Windows子系统
重新启动电脑后以管理员身份打开powershell
输入以下命令设置wsl为wsl2(听说更好)
wsl --set-default-version 2
查看可以安装子系统的版本(如果提示无法解析服务器的名称或地址,可能是你关闭了强制windows更新,需要重新打开)
wsl -l -o
如果安装默认Ubuntu版本,输入以下命令即可
wsl --install
我选择的是Ubuntu20.04,输入
wsl --install -d Ubuntu-20.04
2. Ubuntu配置
安装好之后搜索ubuntu即可打开,打开默认用户名是root,建议新建一个用户(
<username>
换成你自己的)
adduser <username>
然后按照提示输入密码和其他信息,再将用户添加到sudo组
usermode -aGsudo<username>
重新打开powershell,输入以下命令设置默认登陆用户
ubuntu2004.exe config --default-user <username>
现在可以开始使用ubuntu了,第一步肯定是换源参考链接,第二步建议直接把bash换成zsh,安装历史命令提示、语法高亮插件之后非常舒服,参考链接
接下来安装必要组件
sudoapt-getinstall gcc g++ cmake build-essential gdb
3. 单文件项目编译、运行、debug
首先在ubuntu中新建一个文件夹进行测试,并在其中打开vscode
mkdir demo1
cd demo1
code .
第一次打开应该会弹出一些提示,连接的类型要选择wsl,然后右下角选择Yes去安装一些东西,然后安装图中的这些插件
点击新建文件按钮新建
main.cpp
进行测试
// main.cpp#include<iostream>usingnamespace std;intmain(){
cout <<11<< endl;
cout <<22<< endl;return0;}
接下来是编译运行项目,有两种方法,第一种是用C/C++插件,第二种方法是使用CMake。
(1) 使用VSCode插件
点击右上角的三角形,或者按F5,然后选择g++编译器
此时会生成
.vscode
文件夹,里面包含了如何编译这个cpp的命令,还生成了可执行文件
main
,并且自动执行了一遍
右上角的三角形可以在run和debug两种模式中进行切换。如果需要debug,需要选择debug模式,并在文件中打上断点,点击运行,可以看到成功进入debug模式
(2) 使用CMake
删除上一步创建的
.vscode
文件夹和可执行文件
main
,只留下
main.cpp
,如果没做上一步就不需要删除。然后点击设置->Command Palette,或者按快捷键Ctrl+Shift+P
在弹出的窗口中输入
>CMake: Quick Start
并回车,再选择ubuntu中的GCC,然后在弹出的窗口中输入demo1,然后依次选择C++、Executable,会自动生成CMakeLists.txt并且生成了build文件夹
点击下方的三角形,即可运行
接下来介绍debug方法,点击工具栏左边的CMake,然后在Configure里面点击铅笔符号,选择Debug模式。
注意,由于Debug模式不会开启优化,编译时间比较慢,所以建议平时选择Release模式,只有在需要Debug的时候才切换到Debug模式,在
main.cpp
中打上断点,然后点击下面的虫子按钮,进入debug
4. 多文件项目编译、运行、debug
在多文件项目中,如果使用vscode的运行工具,有点麻烦,因此建议使用CMake。首先在ubuntu中创建demo2文件夹,然后分别创建
main.cpp
、
person.h
、
person.cpp
进行测试,代码如下
// main.cpp#include<iostream>#include"person.h"usingnamespace std;intmain(){
cout <<11<< endl;
Person* p =newPerson(22,"lzj");
cout << p->getAge()<< endl;return0;}
// person.h#include<iostream>usingnamespace std;classPerson{public:Person()=default;Person(int age, string name):age_(age),name_(name){}intgetAge();private:int age_;
string name_;};
// person.cpp#include"person.h"intPerson::getAge(){return age_;}
和之前的步骤一样,快速创建一个CMakeLists.txt
因为
main.cpp
中包含了
person.h
,需要修改一下CMakeLists.txt,把第7行
add_executable(demo2 main.cpp)
改为
add_executable(demo2 person.cpp main.cpp)
。
保存后会自动编译,编译成功后点击下面的三角形,程序正常运行。将CMake设置为Debug模式后,添加断点,点击下面的虫子,成功进入debug
5. 关闭WSL
如果长期不使用WSL,可以关闭以节省资源。
查看目前正在运行的wsl
wsl --list --verbose
关闭所有wsl
wsl --shutdown
6. 其他
我也是刚开始用WSL,后面会在这里总结一些经验
(1) 文件传输
Windows与WSL传输文件非常方便,打开文件资源管理器,点击左边的Linux,选择安装的Ubuntu,进入
/home
目录,即可看到自己的文件,可以随意复制粘贴
(2) mysql端口冲突
众所周知,mysql默认的端口是3306。我在windows中安装了mysql,并且启用了服务,在WSL中我死活启动不了mysql,后来才发现是端口冲突,需要关闭windows的mysql服务。首先搜索服务页面并打开,找到MySQL80,停止服务
版权归原作者 瓜牛会飞 所有, 如有侵权,请联系我们删除。