0x01 vscode qt环境配置

335 阅读2分钟

本机的qt creator打开很慢. 于是尝试用 vscode+qmake进行qt5的开发.

1. qt环境配置

QT\5.15.2\mingw81_64\bin(qmake路径) 和 QT\Tools\mingw810_64\bin(对应的mingw路径)放入系统环境变量中.

命令行执行 qmake -v能显示版本则表明qmake已加入了系统环境变量当中, 同理, 执行 gcc -v 能显示正确版本, 表明mingw已加入.

2. vscode include配置

安装vscode c++扩展. 参考帖子:
主要参考了这篇帖子
可以吸收下这篇的思想
vscode 官方配置c++的教程

配置对应的 c_cpp_properties.json,launch.json,tasks.json
以下为v0.1版本的模板.目前主要为debug的配置.
TODO: 区分release和debug版本的构建

2.1 c_cpp_properties.json

{
    "configurations": [
        {
            "name": "mingw64",
            "includePath": [
                "[改]QT的include路径,如 D:/QT/5.15.2/mingw81_64/include/**",
                "${workspaceRoot}/**"
            ],
            "browse": {
                "path": [
                    "[改]同上,如 D:/QT/5.15.2/mingw81_64/include/**",                  
                    "${workspaceRoot}/**"
                ]
            },
            "compilerPath": "[改]你的g++路径 D:\\QT\\Tools\\mingw810_64\\bin\\g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17"
        }
    ],
    "version": 4
}

2.2 launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gdb",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\build\\debug\\${workspaceFolderBasename}.exe",//程序可执行文件的完整路径。
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            //"miDebuggerPath": "D:\\Qt\\Qt5.15.2\\Tools\\mingw810_64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            // 调试之前先编译一下,即对应tasks.json任务中的make
            "preLaunchTask": "make"//与tasks.json文件里的label名对应
        }
    ]
}

2.3 tasks.json

{
    "tasks": [
        
        // 任务:qmake 根据.pro文件生成 Makefile,通常是.pro文件改动后才需要执行
        //      这个任务的执行等效命令行 >> cd build
        //                           >> qmake ../Demo.pro
        {
            "type": "shell",
            "label": "qmake",
            "options": {
                
                // cwd的意思是执行这个命令的时候,所在的目录
                // 这里我们指定为工程目录下的build文件夹,这样的话
                // 当执行qmake的时候,产生的中间文件就在build文件夹下面了
                "cwd": "${workspaceFolder}\\build"
            },
            "command": "qmake",  //command 命令,这个不用说了
            "args": [
                // qmake后面跟的参数,因为上面cwd配置为build目录,
                // 所以.pro文件应该在build的上一级,所以使用../*.pro
                "../*.pro" 
            ],
        },
        
        // 任务:编译 每次修改代码后都需要执行
        //      任务等效命令行  >>make -j16 debug
        {
            "label": "make",
            "options": {
                "cwd": "${workspaceFolder}\\build"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "command": "make",
            "args": [
                "-j16",
                "debug"
            ],
            "dependsOn": [
                //"qmake"
            ]
        },
        
        // 任务:清理 等效命令行 make clean
        {
            "label": "clean",
            "options": {
                "cwd": "${workspaceFolder}\\build"
            },
            "command": "make",
            "args": [
                "clean"
            ]
        },
        
        // 运行程序
        {
            "label": "run",
            "options": {
                "cwd": "${workspaceFolder}\\build\\debug"
            },
            "command": "${workspaceFolderBasename}.exe", 
            "args": [
                ""
            ],
            "dependsOn": [
                "make"
            ]
        }
    ],
    "version": "2.0.0"
}

3. 试运行

配置好章节2的内容之后.
别忘了工程目录中新建一个build文件夹用于放编译中的过程文件.
按下图分别执行qmake, make/run 即可构建编译工程. 0x01-1.png

3.1 make无法执行

\Tools\mingw810_64\bin目录中,把里面的mingw32-make.exe改成make.exe
若你是自己单独安装的mingw,在对应目录中修改好即可