【WSL系列】(二)Visual Studio 开发 Linux C++

配置WSL

首先,要确保你的WSL已经安装了g++ 和 gdb。

以下是Ubuntu的命令。

sudo apt-get install g++
sudo apt-get install gdb

新建Visual Studio项目

首先,新建一个Linux C++项目。
在这里插入图片描述
修改项目属性:

把Platfrom Toolset改成GCC for Windows Subsystem for Linux。
在这里插入图片描述
当你点击运行的时候,你发现什么东西一闪而过,而你什么都没看见,就这么结束了。。。

这里我一定要吐槽一下,真不知道这里微软是怎么设计的。要解决这个问题,请看下面:

Linux 控制台窗口 Linux Console Window

其实,Linux的控制台窗口,需要我们手动去查看。方法就是目录选 Debug -> Linux Console Window。
在这里插入图片描述

另外一个方法,大家也都知道,就是用输入来阻止程序终止。

不过,我今天一不小心关闭了Linux Console Window,这时,哪怕我用了输入了阻止程序终止,我还是看不懂这个窗口。。。

我觉得,这一定是一个BUG。我明天会去找微软报BUG。

我是谁?我在哪里?

我们可以读取WSL的环境变量,确定自己是谁。

#include <iostream>
#include <filesystem>

using namespace std;

int main()
{
    cout << "who am i?" << endl;
    cout << getenv("USER") << endl;
    cout << "where am i?" << endl;
    cout << getenv("PWD") << endl;

    //set C++ Language Standard to C++17 (-std=c++17)
    cout << "Current path is " << filesystem::current_path() << endl;
    return 0;
}

在这里插入图片描述

这里为什么不是root,因为WSL的默认用户不是root。我感觉改成root比较好。毕竟程序开发完了,都有放进docker。我也懒得在docker里面建第二个用户。

这里和远程调试有比较大的区别。如果是远程连接Linux,代码会被复制到远程机器,生成的可执行文件也在远程机器上,本地的可执行文件(.out)应该是从远程机器复制回来的。

然后,使用WSL以后,代码不会被复制到WSL。因为WSL有个特性,他可以直接访问windows下面的文件。比如D盘就是/mnt/d。Visual Studio充分利用了这一特性,不再复制代码。这样的好处就是可以省下一些磁盘空间。这也符合我使用WSL的习惯。我的习惯就是文件还是存在Windows里。WSL用来安装一些开发用的程序,如果程序运行异常,直接重装WSL。这样,就把重装的压力,由Windows转移到了Linux。

猜你喜欢

转载自blog.csdn.net/juwikuang/article/details/107525296