本文主要介绍了在VsCode下如何使用相关插件与工具来配置Qt的开发环境。
#### **一、准备需要的工具:**
1. Vscode插件:
C/C++(ms-vscode.cpptools) :微软官方的VsCode C/C++插件,主要提供C/C++的代码补全,代码审阅,调试等。
C++ Intellisense(austin.code-gnu-global):主要用于GNU的全局标签代码补全功能。
Cmake(twxs.cmake) : 主要提供Cmake脚本的语法提示与高亮。
Cmake Tools(vector-of-bool.cmake-tools):VsCode 下cmake的扩展支持,也就是在把Cmake中的一些命令转化为一些可视化的操作。
2. MingW: 就是开源GNU编译器的Windows版本, 用于编译C/C++ ,类似功能的编译器还有MSVC(微软的), Clang等。 不同的编译器的makefile脚本语法略有不同。
3. Cmake: Cmake是一个跨平台的构建工具, 由于存在不同的编译器,和不同的平台系统,各个编译器的makefile脚本语法不同,所以诞生了Cmake这个工具,可以使用Cmake脚本生成不同平台下的makefile,比较方便跨平台编译!这里要注意:Cmake只是提供了自动化makefile构建,不会管编译的,在生成了makefile之后,自己在运行make命令来执行编译。
Cmake的命令参数较多,使用Cmake-GUI工具就会非常方便的构建脚本。
4. Qt SDK: 要使用QT的库,就要安装qt的sdk
以上是环境搭建所需要的一些工具,其中Qt的开源版本中提供有mingW编译器,不用额外下载,只需要安装Qt即可,其中有些工具包是可选的。 安装时注意选择。这里安装了Qt5.12开源版本目录结构如图:
![](https://img.kancloud.cn/8a/14/8a14a93af5cd93f1a0e9b25839017514_597x353.png)
其中5.12.5 目录下是Qt的库包和一些相关的工具,这里我安装了Qt的4个版本:
![](https://img.kancloud.cn/26/9a/269ad74eb8e8baabe9b5724d62720f72_472x139.png)
与这些版本相对应,Qt 在tools下也提供了对应版本的mingw编译器,如果需要msvc编译器需要安装Visual studio , Qt没有提供msvc的版本,因为msvc不是开源的。**这里需要注意的是: 不同按本的Qt库要选择相应的编译器,否则会编译失败!**
#### **二、配置编译环境**
这里要说一下VsCode的基本使用:VsCode 本质上只是一个文本编辑器,有赖于各种丰富的插件,使得VsCode 更像是一个IDE。 使用VsCode有一个很好的好处就是,能够让开发者更了解项目底层的细节,这样能够更好的掌握项目,在项目出现问题时,能够更敏锐的发现问题所在!
Vscode的配置: VsCode的配置大概有三层:程序默认设置->用户设置->工作空间设置。 后面的配置会覆盖前面的配置。工作空间的设置会在当前工程目录下的 .vscode文件夹下的setting.json文件中。
另外VsCode中很多插件都会有自己的独立配置文件也存在.vscode文件夹中,一般来说这些插件的配置也可以写在setting.json中,让整个工程的文件目录看起来不是那么凌乱。
ps: VsCode 很有用的一个快捷键:``` ctrl + shift + P``` 用来打开命令面板,调用相关的命令,
了解了以上的基础知识后,就可以配置Qt的开发环境了:
1. 建立一个CmQtApp目录,在目录下建立src目录,用来存放源文件
2. CmQtApp->src目录下 建立一个 main.cpp文件:
```
#include
usingnamespacestd;
int main(intagrc,char\*argv\[\]){
cout<<"Hello World! \\t\\n";
return0;
}
```
3. 在CmQtApp目录下 建立CMakeLists.txt 内容如下
```
# 要求的cmake最小版本
cmake\_minimum\_required(VERSION 3.1)
#工程名字
project(CmQtApp);
#要生成的文件的依赖
add_executable(${PROJECT\_NAME} ./src/main.cpp)
```
有了这些文件以后, 剩下的就是如何运行,调试这个的程序。
使用 ``` ctrl+shift +p``` 在弹出的命令面板中选择:open wordspace settings,来配置我们的工程。
![](https://img.kancloud.cn/ea/fb/eafb932ac108172cd6cfb4014ea58756_751x438.png)
在打开的面板中,可以看到有许多的选项可以配置,
![](https://img.kancloud.cn/38/c5/38c549b4e91805ea23b2fb053900fabb_1212x806.png)
我们所需要的几个重要配置就是插件(Extensions)下的 C/C++ 以及Cmake的一些配置:
```"C_Cpp.default.configurationProvider": "vector-of-bool.cmake-tools"```
这个配置在网上很多的文章中都没有说清楚!而且网上文章中的这个配置项 多位于.vscode/c_cpp_properties.json 这个独立的文件中,其实也可以直接放在seting.json中。 而这个配置的意思,网上转来转去的文章根本都没有说明!
这个配置的意思是:c_cpp编译的环境变量等的配置从哪里读取,或者说是由谁提供。vector-of-bool.cmake-tools 是Cmake Tools 这个插件的名字。 Cmake Tools中调试的时候,也需要指出编译器路径等。所以这个配置项的意思是 c_cpp所需的默认配置跟Cmake Tools 中相关的编译配置相同!
"C_Cpp.default.includePath": ["G:/Qt/5.12.5/mingw73_32/include/**"],这个路径指出了头文件的路径,可以配置多个路径, 注意```include/**``` 后面的两个星号指的是 让插件遍历 include 目录下所有目录。如果不包含Qt的头文件,那么编译的时候会失败。
接下来配置Cmake插件的相关选项:
"cmake.buildDirectory": "${workspaceRoot}/build": 指出了Cmake要将构建的脚本生成在哪里
基本上配置了这三个重要选项即可,剩下的mingW编译器的路径等, 可以使用 CMake:Scan for Kits 命令来让插件搜索本机安装的编译器。
![](https://img.kancloud.cn/31/ad/31adc44e8d82a535a22111f7f98a351a_751x437.png)
![](https://img.kancloud.cn/7c/2c/7c2c63d8f437dad78f60414b9e0a87eb_751x360.png)
可以看到我本机搜索出来了 这些编译器, 然后可以使用在使用Cmake Configure的时候 就可以选择一个编译包来进行 编译构建。
#### **三、编译构建**
配置要以上环境后,在命令面板选择 Cmake:Configure 命令:
![](https://img.kancloud.cn/f9/4e/f94e173a0cc1101599620479d05c6d30_747x437.png)
即可看到当前工程目录下生成了一个 dist文件夹,里面由cmake生成的makefile文件等文件。
与此同时,注意在VsCode的最底部,有了一些工具图标
![](https://img.kancloud.cn/1f/07/1f07c537bde1408796de8b8bccb42f98_1410x29.png)
可以选择不同的开发包来构建相应的目标程序。
现在把工程文件修改一下,让工程支持Qt,可以显示Qt的窗体
首先修改CMakeLists.txt文件
```
cmake_minimum_required(VERSION 3.1)
set(PROJECT_NAME CmQtApp)
project(${PROJECT_NAME})
set(CMAKE_BUILD_TYPE Release)
# import Qt library start
set(CMAKE_INCLUDE_CURRENT_DIRON)
set(CMAKE_AUTOMOCON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_PREFIX_PATH G:/Qt/5.12.5/mingw73_32)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
# import Qt libirary end
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/lib)
set(EXECUTABLE_OUTPUT_PATH${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/bin)
add_executable(${PROJECT_NAME} ./src/application.cpp)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets)
```
#### **四、调试程序 **
![](https://img.kancloud.cn/ec/c9/ecc9ef355acdbc2f07aafcede46eedac_650x464.png)
点击左侧菜单栏的爬虫,然后点击齿轮,会弹出来一个调试launch.json配置文件,配置相关的路径即可.
```
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [{"path":"%path%;G:/Qt/5.12.5/mingw73_32/bin"}],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "G:\\Qt\\Tools\\mingw730_32\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++.exe build active file"
}
]
}
```
这里要注意的参数是:
miDebuggerPath: 指出了mingw下gdb.exe这个调试器的路径。
request: 这里是launch, 还有一种是attach, attach用来调试Dll程序很有用
program: 是需要调试的程序名字
environment: 是调试时所需的临时环境变量, 比如调试Qt程序时,需要把Qt的相关dll添加到环境变量,否则程序无法运行。
preLaunchTask: 是指调试前要执行的任务,在VsCode/task.json中可以配置