使用VS Code進行Qt開發
文章目錄
- 使用VS Code進行Qt開發
- 測驗環境
- 步驟
- 1. 將Qt的bin目錄添加到環境變數
- 2. 安裝VS Code擴展
- 3. 使用Qt Creator創建CMake專案
- 4. 在VS Code中打開專案
- 5. 構建并運行專案
- 7. 除錯專案
- 一些小問題
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++擴展,

在擴展商店搜索cmake,安裝前兩個擴展,分別為CMake、CMake Tools,

3. 使用Qt Creator創建CMake專案
使用Qt Creator創建一個測驗專案,如圖所示:

4. 在VS Code中打開專案
用VS Code打開CMakeLists.txt檔案所在目錄,如圖所示:

需要選擇一個kit,我是用的是VS 2019的工具包,也可以使用MinGW,具體請參考CMake擴展的官方檔案,
提示是否配置智能感知,選擇是,
5. 構建并運行專案
按F7進行構建:

按Shift + F5運行:

7. 除錯專案
添加斷點,按下Ctrl + F5進行除錯:

一些小問題
上述所有步驟完成后,已經可以正常編碼和運行,但智能感知有一點問題,如圖:

原因在于Qt生成的ui檔案沒有被包含到智能感知的include目錄中,
查詢了CMake檔案后發現ui檔案所在目錄會被添加到目標屬性的include目錄屬性中:

但實際驗證發現并沒有,所以我們還需要手動添加這個屬性,
假設生成的目標為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")
智能感知正常作業:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/157305.html
標籤:其他
