WSL是“Windows Subsystem for Linux”的缩写,WSL让我们能够在Window10下直接使用Linux命令行,相比虚拟机而言,其开启速度要快上很多;相比云主机,又无需付费,且由于WSL位于本地,在VS中编译速度相对要快上许多。
WSL的安装网上有许多教程,就不多加叙述。不过,推荐一个我觉得还不错的教程,在Window10的Microsoft Store中搜索“WSL Guideline”,安装后即可看到比较详细的安装教程。
安装好后记得换源,换成国内的源下载会更快,注意换源时选择你和下载的WSL Linux发行版相同版本的源,例如Ubuntu 20.04 LTS如果用Ubuntu 18.04 LTS的源,会出现好多软件包出现依赖问题。
下一步就是安装相应的开发工具了
sudo apt-get install g++ gdb make ninja-build rsync zip
有了这些工具,我们就能在Visual Studio2019中编写Linux平台的C++程序啦。
关于VisualStudio对Linux的支持,在我之前的文章中已经介绍过操作方法。
可见Visual Studio 2019 基于Linux平台的C++开发(这篇文章介绍的是基于云平台或虚拟机上的Linux,不过大部分操作和WSL是差不多的,我主要记录不同的地方)
在VS中创建一个Linux C++开发的空项目,在“项目”->“属性”->“配置属性”->“常规”中选择平台工具集,将其从Gcc for Remote Linux改为Gcc for Windows Subsystem for Linux并点击应用。这时,我们可以发现,平台工具集下面的那几个远程开头的行都消失了,转而变成了WSL*.exe完整路径。这就证明了我们成功地将编译平台设置为WSL了。这时主界面绿色的调试箭头旁边的字已经变为GDB调试程序
下面我们就用一个例程来验证一下吧~
#include<iostream>
#include<stack>
#include<unistd.h>//特地试一下Linux专有的头文件
using namespace std;
int main()
{
pid_t i = getpid();
stack<int> intStack({1,2,3,4,5,6,7,8,9,10});
cout << "pid = " << i<<endl;
while (!intStack.empty()) {
cout << intStack.top() << " ";
intStack.pop();
}
cout << endl;
return 0;
}
点击“调试”->“Linux控制台”呼出控制台窗口,点击绿色箭头或按F5,即可看到输出结果,该例子结果如下:
(注意:初次运行时只输出了pid而没有输出intStack不断出栈的内容,改了几次后发现,每次输出后都得加入" "或cout<<endl换行后才能在Linux控制台看到结果,我猜测可能是结果写在了缓冲区中,只有换行后才会将缓冲区的内容输出到VisualStudio的Linux控制台中)