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

首先,你需要安装WSL,这个之前写了:

【WSL系列】(一)安装与文件互访

配置WSL

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

以下是Ubuntu的命令。

sudo apt-get update
sudo apt-get install build-essential gdb

新建Visual Studio项目

首先,新建一个Linux C++项目。
【WSL系列】(二)Visual Studio 开发 Linux C++_第1张图片
修改项目属性:

把Platfrom Toolset改成GCC for Windows Subsystem for Linux。
【WSL系列】(二)Visual Studio 开发 Linux C++_第2张图片
当你点击运行的时候,你发现什么东西一闪而过,而你什么都没看见,就这么结束了。。。

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

Linux 控制台窗口 Linux Console Window

其实,Linux的控制台窗口,需要我们手动去查看。方法就是目录选 Debug -> Linux Console Window。
【WSL系列】(二)Visual Studio 开发 Linux C++_第3张图片

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

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

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

我是谁?我在哪里?

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

#include 
#include 

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;
}

【WSL系列】(二)Visual Studio 开发 Linux C++_第4张图片

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

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

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

VS vs VsCode

很多教程,都用了VSCode。我这里比较一下二者。
VS C++远程编辑的是本地代码,然后把代码复制到远端。
VSCode编程,编辑的是远端代码。他是打开远端文件夹,并编译里面的C++代码。
我用Visual Studio ,可以设置WSL为Debug,远端为Release。这样我部署的时候只要用Release编译一下就行了。
如果用VSCode,我就必须手动复制一次代码,这就比较烦人了。

代码地址:

https://github.com/EricWebsmith/wsl_cpp_demo/

你可能感兴趣的:(linux,ubuntu,c++,vscode)