博客 / 詳情

返回

VSCode+MSVC+Qmake環境搭建筆記

一 前言

最近的工作內容是開發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。

image-13.png
切換到編譯器可以看到當前使用的編譯器的本地地址。
image-12.png

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)打開配置界面:
image-14.png
配置名稱可以新建一個,根據不同的項目使用不同的配置,下面配置的這些都是服務於編譯器的,和項目構建無關,着急可以忽略。編譯器路徑和我們前面設置的MSVC路徑一致,我這裏不一樣也無所謂,主要是為了讓vscode不飄紅。
image-15.png
下面這兩個配置第一個根據自己用的機器選擇,我這裏用的是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文件。
image-18.png

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.