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() << "\t";
intStack.pop();
}
cout << endl;
return 0;
}
點擊“調試”->“Linux控制台”呼出控制台窗口,點擊綠色箭頭或按F5,即可看到輸出結果,該例子結果如下:
(注意:初次運行時只輸出了pid而沒有輸出intStack不斷出棧的內容,改了幾次后發現,每次輸出后都得加入"\n"或cout<<endl換行后才能在Linux控制台看到結果,我猜測可能是結果寫在了緩沖區中,只有換行后才會將緩沖區的內容輸出到VisualStudio的Linux控制台中)