一 前言
最近的工作內容是開發QT的插件,公司的插件框架都是基於vs2017+MSVC+Qmake搭建的,由於QT的官方IDE太難用了,自己又比較習慣使用VSCode了,所以打算通過VSCode來進行開發。在網上搜索了不少文章來看,大部分都是使用Cmake或者MinGW來進行配置的,竟然沒有一篇講這三個組合的詳細配置文章,真是醉了。經過一番摸索,終於配置成功了,記錄一下配置過程,方便以後查閲。
二 環境搭建
2.1 設置環境變量
2.1.1 Qmake
設置好Qmake的環境變量,目錄參考如下:
D:\QT5.14.2\5.14.2\msvc2017_64\bin
配置好後可以在終端中使用qmake --version來查看是否配置成功。
2.1.2 MSVC
構建時會調用MSVC來進行編譯,由於後續的構建都是在終端環境下運行的,需要我們提前設置好MSVC的環境變量,目錄參考如下:
D:\VS2017\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
注意這裏QT的版本和MSVC的版本要對應,x86就都是x86,x64就都是x64。
我是先在QT Creator中跑通可以構建項目之後再來做Vscode的配置的,所以配置的版本是和QT裏用的一樣的。這裏怎麼查看應該使用那個版本呢?
打開工具-選項界面,如下圖所示,一般使用的就是這個默認的套件版本。像我這裏使用的就是64位的MSVC2017。
切換到編譯器可以看到當前使用的編譯器的本地地址。
2.1.2 QT環境變量
目錄參考如下:
D:\QT5.14.2\Tools\QtCreator\bin
配置好所有的環境變量之後,一定要完全關閉VSCode再重新打開刷新一下環境變量,要不然會找不到cl.exe,噁心我一個多小時。
2.2 VSCode C++環境配置
在VSCode裏面安裝好C++插件後,Ctrl+Shift+P打開命令面板,輸入C/C++: Edit Configurations (UI)打開配置界面:
配置名稱可以新建一個,根據不同的項目使用不同的配置,下面配置的這些都是服務於編譯器的,和項目構建無關,着急可以忽略。編譯器路徑和我們前面設置的MSVC路徑一致,我這裏不一樣也無所謂,主要是為了讓vscode不飄紅。
下面這兩個配置第一個根據自己用的機器選擇,我這裏用的是amd的cpu,所以選擇amd64,第二個配置是為了讓IDE識別QT的頭文件路徑,避免飄紅。
vscode中的C++配置好後,我這個項目切換為GB2312編碼格式,就不會飄紅了,頭文件一路點到最底層的QT庫文件下,可以看見與配置的目錄時一致的。
三 配置tasks.json
3.1 任務配置
我自己個人的開發需求是有一個A目錄,裏面存放各種庫文件和頭文件,A目錄下有各種模塊文件夾,我在開發的時候工作目錄在A目錄下,開發各種模塊的時候就比較好切換參考。還有tasks.json是一個項目一個,以A目錄建立項目就不用每次做新插件都要重新粘貼一下tasks.json的內容了。
下面我寫的這個就是我個人的配置,大家可以根據自己的需求進行修改,我這裏是先獲取去編譯哪一個插件,關於插件項目名的地方是一個變量,有默認值,也可以命令行輸入。
新建一個在插件文件夾下的build目錄,在build目錄下運行qmake生成Makefile,最後調用jom進行編譯,jom是QT的一個用來加速編譯的庫,下面調用的還是MSVC。
在調用MSVC之前要在命令行下設置一些變量,需要運行一下vcvarsall.bat腳本,腳本路徑根據自己安裝的VS版本進行修改。
{
"version": "2.0.0",
"inputs": [
{
"id": "projectName",
"description": "Enter the project folder name",
"default": "RollCallSelfCheck",
"type": "promptString"
}
],
"tasks": [
{
"label": "mkdir",
"type": "shell",
"command": "powershell.exe",
"args": [
"-Command",
"New-Item -ItemType Directory -Force '${workspaceFolder}/${input:projectName}/build'"
]
},
{
"label": "QmakeProject",
"type": "shell",
"command": "qmake.exe",
"args": [
"../${input:projectName}.pro",
"-spec",
"win32-msvc",
"CONFIG+=debug",
"CONFIG+=qml_debug"
],
"options": {
"cwd": "${workspaceFolder}/${input:projectName}/build"
},
"dependsOn": [
"mkdir"
],
"group": "build"
},
{
"label": "MakeProject",
"type": "shell",
"command": "cmd.exe",
"args": [
"/c",
"call \"D:\\VS2017\\VC\\Auxiliary\\Build\\vcvarsall.bat\" x64 && cd /d \"${workspaceFolder}\\${input:projectName}\\build\" && jom.exe -f Makefile.Release"
],
"options": {
"cwd": "${workspaceFolder}"
},
"dependsOn": [
"QmakeProject"
],
"group": "build"
}
]
}
配置好後選擇運行上方菜單中的終端-運行選擇我們寫好的任務就可以構建項目了,構建好後的文件會放在插件上級目錄下的bin目錄中,bin目錄下有debug和release兩個目錄,分別存放調試版和發佈版的dll文件。