1. 程式人生 > 程式設計 >使用VS Code進行Qt開發的實現

使用VS Code進行Qt開發的實現

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

因為Qt5支援使用CMake進行構建,而VS Code也可以支援CMake構建系統,因此是完全可以的。

測試環境

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

步驟

1. 將Qt的bin目錄新增到環境變數

假設Qt安裝在C:\Qt,那麼將C:\Qt\5.15.0\msvc2019_64\bin新增到環境變數。

2. 安裝VS Code擴充套件

在擴充套件商店搜尋c++,安裝微軟發行的C/C++擴充套件。

c++

在擴充套件商店搜尋cmake,安裝前兩個擴充套件,分別為CMake、CMake Tools。

cmake

3. 使用Qt Creator建立CMake專案

使用Qt Creator建立一個測試專案,如圖所示:

creator

4. 在VS Code中開啟專案

用VS Code開啟CMakeLists.txt檔案所在目錄,如圖所示:

vscode

需要選擇一個kit,我是用的是VS 2019的工具包,也可以使用MinGW,具體請參考CMake擴充套件的官方文件。

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

5. 構建並執行專案

F7進行構建:

buildqt

Shift + F5執行:

run

7. 除錯專案

新增斷點,按下Ctrl + F5進行除錯:

debug

一些小問題

上述所有步驟完成後,已經可以正常編碼和執行,但智慧感知有一點問題,如圖:

problem

原因在於Qt生成的ui檔案沒有被包含到智慧感知的include目錄中。

查詢了CMake文件後發現ui檔案所在目錄會被新增到目標屬性的include目錄屬性中:

check

但實際驗證發現並沒有,所以我們還需要手動新增這個屬性。

假設生成的目標為Test,在CMakeLists.txt檔案的最後一行新增:

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

最終的CMakeLists.txt檔案內容為:

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")

智慧感知正常工作:

resolve

到此這篇關於使用VS Code進行Qt開發的實現的文章就介紹到這了,更多相關VSCode Qt開發內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!