由於最近的學習需求,折騰起了vscode,畢竟是跨平台,對以后項目的拓展也很方便。至於為什么不用mingw, tdm-gcc一類,主要因為畢竟是Windows平台,使用自家的MSVC開發環境一來可以放心,少出BUG,二來能夠增強Windows上其他自家庫的拓展性(例如DX,Windows SDK),三來VS着實臃腫,啟動較慢,用vscode犧牲功能換取效率,在學習過程中還是比較值得的(SSD請回避)。
總的來說,配置過程頭皮發麻,錯誤百出,查閱了不少資料,將目前的所得暫且記下,作為備忘。
總體步驟
總算折騰出了Hello World 和 1+2=3,總體步驟說起來也就那么幾步,如下:
安裝Visual Studio 構建工具
安裝Visual Studio Code和C++插件
創建項目目錄
啟動Visual Studio Code
cpp配置文件
運行配置文件
任務配置文件
build & debug
優化啟動配置
安裝Visual Studio 構建工具
進入VS官網下載頁面,找到
“所有下載–Visual Studio xxxx 工具–Visual Studio 2019 生成工具”,
下載,選擇安裝“C++生成工具”即可,當然,安裝過程中右側有可選項,酌情安裝,第一步完成。
安裝Visual Studio Code和C/C++插件
略
創建項目目錄
mkdir或者新建空文件夾,例如文件夾叫hello
啟動Visual Studio Code
這一步是關鍵所在,眾所周知,在linux和mac下gcc或者clang都是直接可以在shell中敲+回車的,但是在windows powershell/cmd 中,MSVC的編譯器無法直接使用,因為MSVC是一套相當復雜的環境,配置文件一堆,有茫茫多的環境變量,因而若要使用MSVC的編譯器,需要事先導入其環境變量(NB)。
省事的步驟是添加系統環境變量,但VS官方不推薦,想必也是有原因的,因此VS提供了一個環境變量腳本,用於啟動帶有環境變量的cmd。(這里需要知道一點,每一個cmd控制台的環境變量可以不同,是單獨存在的,但是繼承了系統和用戶的環境變量)
。。。
扯了一堆,做法有兩種:
在Windows搜索框中鍵入”Develop”,會出來如下圖所示:
點擊即可啟動控制台。
如果找不到,去VS安裝目錄下,例如D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools 下,找到VsDevCmd.bat,在此啟動控制台,並運行這個文件即可。
啟動后界面如下;
在控制台中輸入
code
即可啟動vscode,如果提示code命令找不到,需添加vscode安裝目錄至系統環境變量PATH中,重新啟動。(添加環境變量不在此贅述)
配置文件
先松一口氣,checkpoint一下,到目前為止,需要通過MSVC環境啟動vscode,並打開我們的項目目錄,如圖所示:
檢查環境變量是否導入:
點擊終端–新建終端,輸入
echo $env:INCLUDE
如果能見到一大堆東西,則導入成功!
下一步是配置文件
1. C/C++配置
按F1,輸入configuration,找到C/C++:編輯配置(json),如下圖
會在項目文件夾下生成.vscode目錄和一個json文件,並進入到json文件中,如下圖
需要修改兩處地方:
"includePath": [ "${workspaceFolder}/**", "${env:INCLUDE}", ], "compilerPath": "D:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\Hostx86\\x86\\cl.exe"
其中編譯器路徑compilerPath有兩種寫法,一種是改為上述VS目錄,另一種是直接刪掉。
2. task配置
task配置任務,主要是生成任務和測試任務,當然還可以有clear等等
按F1,輸入build,找到編輯默認生成任務,點擊,選擇使用模板創建json–Others(有cl更好),會創建tasks.json,如下圖
修改tasks配置如下:
... "tasks": [ { "label": "build debug Win32", "type": "process", "command": "cl", "args": ["/Zi", "/Od", "/EHsc"], "group": "build", "problemMatcher": [ "$msCompile" ] } ]
暫時不管他了,下一步再說
3. launch配置
按F5,在彈出界面中選擇C++(Windows)
生成launch,json,如圖所示
至此,配置文件篇結束,當然下一步會針對具體的項目修改。
Build & Debug
終於到了最后一個checkpoint了,在這里構建兩個項目,第一個是helloworld,第二個是多文件的add。
1. HelloWorld
創建文件夾src,編寫main.cpp
#include <iostream> using namespace std; int main(){ cout << "HelloWorld!" << endl; return 0; }
目錄結構如圖所示
創建文件夾bin
創建文件夾obj\msvc
創建文件夾build\msvc,創建文件Debug,輸入以下內容
/Fe:"bin\hello" /MTd src\main.cpp
再次來到tasks.json,修改配置文件的args如下
"args": ["@build/msvc/Debug", "/Fo:obj\\msvc\\", "/Zi", "/Od", "/EHsc"],
當然,看着不舒服可以換行寫。
此時目錄結構如圖所示
來到launch.json,修改配置文件如下:
"program": "${workspaceFolder}/bin/hello.exe",
至此,配置步驟完成,按ctrl+shift+B或者F1,輸入build運行生成任務
打個斷點,按F5
結束。
2. 多文件的Add
在src目錄下新建文件add.cpp,add.h
add.h
int add(int a, int b);
1
add.cpp
#include "add.h"
int add(int a, int b){
return a + b;
}
1
2
3
4
main.cpp
#include "add.h"
#include <iostream>
using namespace std;
int main(){
cout << add(1,2) << endl;
return 0;
}
1
2
3
4
5
6
7
8
9
10
來到build\msvc\Debug文件,修改為
src\add.cpp
/Fe:"bin\hello" /MTd src\main.cpp
1
2
ctrl + shift + B一下,F5
3沒錯
結束。
到此為止,vscode簡陋的MSVC運行環境就搭好了,關於cl編譯器的使用方法參考MSDN
優化配置
這一步可有可無,不過為了方便期間,建議配置一下。
1.clear任務
配置tasks.json,新增一個任務
{
"label": "clear",
"type": "shell",
"command": "rm",
"args": ["obj/msvc/*,", "bin/*,", "*.pdb", "-Force"],
"group": "none",
"problemMatcher": []
},
1
2
3
4
5
6
7
8
9
清理msvc項目生成的一切東西。最后*.pdb文件是由於會生成符號調試文件v140.pdb,暫時沒找到解決方法。
2. 啟動腳本
什么?每次啟動都必須找Developer Command Prompt for VS?怕麻煩的我決定想想辦法。
又注意到在編譯過程中出現了這么一句話
用於 x86 的 Microsoft (R) C/C++ 優化編譯器 19.25.28610.4 版
1
那么問題來了,x64怎么辦?
一頓搜索發現了這個東西
有救了,首先在vscode中保存工作區在項目根目錄下(取個名字hello)
在項目根目錄下新建文件vscode.bat和vscode64.bat
vscode.bat
call "D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat"
code .\hello.code-workspace
exit
1
2
3
vscode64.bat
call "D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
code .\hello.code-workspace
exit
1
2
3
注意修改VS的安裝目錄,本人安裝在D盤。現在的目錄結構如下:
保存,退出,運行vscode64.bat
build一下,發現了這句話
搞定。
后記:
關於編譯器的使用,cl,gcc,clang等肯定有所不同,需要經過更多實踐,也可以選擇不用編譯器,使用make、msbuild、Cmake等等工具輔助構建,但那又是另外一個故事了。
參考文獻
[1] code官方教程: https://code.visualstudio.com/docs/cpp/config-msvc
[2] cl參數: https://docs.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-categoryc
[3] cl Command File: https://docs.microsoft.com/en-us/cpp/build/reference/cl-command-files
————————————————
版權聲明:本文為CSDN博主「Idea王」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/nisigesazi/article/details/105078213