🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
本文主要介绍了在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中可以配置