淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

qt是一個(gè)由qt company開(kāi)發(fā)的跨平臺(tái)c++圖形用戶(hù)界面應(yīng)用程序開(kāi)發(fā)框架,本篇文章給大家介紹一下將qt的bin目錄添加到環(huán)境變量、安裝vscode擴(kuò)展、使用vs code進(jìn)行qt開(kāi)發(fā)、構(gòu)建并運(yùn)行項(xiàng)目的方法。

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

【推薦學(xué)習(xí):《vscode》】

Qt Creator界面不美觀,而VS Code更漂亮一些。

因?yàn)镼t5支持使用CMake進(jìn)行構(gòu)建,而VS Code也可以支持CMake構(gòu)建系統(tǒng),因此是完全可以的。

測(cè)試環(huán)境

  • Qt 5.15.0
  • CMake 3.17.5
  • Visual Studio 2019 16.7.5(使用C++的桌面開(kāi)發(fā))
  • Visual Studio Code 1.49.3

步驟

1. 將Qt的bin目錄添加到環(huán)境變量

假設(shè)Qt安裝在C:Qt,那么將C:Qt5.15.0msvc2019_64bin添加到環(huán)境變量。

2. 安裝VS Code擴(kuò)展

在擴(kuò)展商店搜索c++,安裝微軟發(fā)行的C/C++擴(kuò)展。

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

在擴(kuò)展商店搜索cmake,安裝前兩個(gè)擴(kuò)展,分別為CMake、CMake Tools。

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

3. 使用Qt Creator創(chuàng)建CMake項(xiàng)目

使用Qt Creator創(chuàng)建一個(gè)測(cè)試項(xiàng)目,如圖所示:

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

4. 在VS Code中打開(kāi)項(xiàng)目

用VS Code打開(kāi)CMakeLists.txt文件所在目錄,如圖所示:

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

需要選擇一個(gè)kit,我是用的是VS 2019的工具包,也可以使用MinGW,具體請(qǐng)參考CMake擴(kuò)展的官方文檔。

提示是否配置智能感知,選擇是。

5. 構(gòu)建并運(yùn)行項(xiàng)目

按F7進(jìn)行構(gòu)建:

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

按Shift + F5運(yùn)行:

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

7. 調(diào)試項(xiàng)目

添加斷點(diǎn),按下Ctrl + F5進(jìn)行調(diào)試:

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

一些小問(wèn)題

測(cè)試后發(fā)現(xiàn)如果使用MinGW構(gòu)建則不會(huì)出現(xiàn)下面的問(wèn)題,而使用Visual C++構(gòu)建則會(huì)出現(xiàn)。

上述所有步驟完成后,已經(jīng)可以正常編碼和運(yùn)行,但智能感知有一點(diǎn)問(wèn)題,如圖:

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

原因在于Qt生成的ui文件沒(méi)有被包含到智能感知的include目錄中。

查詢(xún)了CMake文檔后發(fā)現(xiàn)ui文件所在目錄會(huì)被添加到目標(biāo)屬性的include目錄屬性中:

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

但實(shí)際驗(yàn)證發(fā)現(xiàn)并沒(méi)有,所以我們還需要手動(dòng)添加這個(gè)屬性。

假設(shè)生成的目標(biāo)為T(mén)est,在CMakeLists.txt文件的最后一行添加:

target_include_directories(Test?PRIVATE?"${CMAKE_BINARY_DIR}/Test_autogen/include_Debug")

最終的CMakeLists.txt文件內(nèi)容為:

cmake_minimum_required(VERSION?3.5)  project(Test?LANGUAGES?CXX)  set(CMAKE_INCLUDE_CURRENT_DIR?ON)  set(CMAKE_AUTOUIC?ON) set(CMAKE_AUTOMOC?ON) set(CMAKE_AUTORCC?ON)  set(CMAKE_CXX_STANDARD?11) set(CMAKE_CXX_STANDARD_REQUIRED?ON)  #?QtCreator?supports?the?following?variables?for?Android,?which?are?identical?to?qmake?Android?variables. #?Check?http://doc.qt.io/qt-5/deployment-android.html?for?more?information. #?They?need?to?be?set?before?the?find_package(Qt5?...)?call.  #if(ANDROID) #????set(ANDROID_PACKAGE_SOURCE_DIR?"${CMAKE_CURRENT_SOURCE_DIR}/android") #????if?(ANDROID_ABI?STREQUAL?"armeabi-v7a") #????????set(ANDROID_EXTRA_LIBS #????????????${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so #????????????${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so) #????endif() #endif()  find_package(QT?NAMES?Qt6?Qt5?COMPONENTS?Widgets?REQUIRED) find_package(Qt${QT_VERSION_MAJOR}?COMPONENTS?Widgets?REQUIRED)  if(ANDROID) ??add_library(Test?SHARED ????main.cpp ????mainwindow.cpp ????mainwindow.h ????mainwindow.ui ??) else() ??add_executable(Test ????main.cpp ????mainwindow.cpp ????mainwindow.h ????mainwindow.ui ??) endif()  target_link_libraries(Test?PRIVATE?Qt${QT_VERSION_MAJOR}::Widgets)  target_include_directories(Test?PRIVATE?"${CMAKE_BINARY_DIR}/Test_autogen/include_Debug")

智能感知正常工作:

淺談VSCode配置并進(jìn)行Qt開(kāi)發(fā)的方法

更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問(wèn):vscode??!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員