VSCode CMake Qt配置

CMake Qt配置

CMakeLists.txt示例:

#设置cmake版本号
cmake_minimum_required(VERSION 3.0.0)

#设置自动生成moc文件,一定要设置
set(CMAKE_AUTOMOC ON) 

#查找需要的Qt库文件,最好每一个库都要写,Qt也会根据依赖关系自动添加
find_package(Qt5Widgets)  
find_package(Qt5Core)
find_package(Qt5Gui)

#查找当前文件夹中的所有源代码文件,也可以通过Set命令将所有文件设置为一个变量
FILE(GLOB SRC_FILES "./*.cxx") 
#同理,查找当前文件夹中所有的头文件
FILE(GLOB HEAD_FILES "./*.h") 
#同理,查找当前文件夹中所有的ui文件
FILE(GLOB UI_FILES "./*.ui") 

#通过Ui文件生成对应的头文件,一定要添加
qt5_wrap_ui(WRAP_FILES ${UI_FILES})

#添加资源文件
set(RCC_FILES rcc.qrc)

#将ui文件和生成文件整理在一个文件夹中,非必须
source_group("Ui" FILES ${UI_FILES} ${WRAP_FILES} )

#创建工程文件
add_executable(${PROJECT_NAME} ${SRC_FILES} ${HEAD_FILES} ${RCC_FILES} ${WRAP_FILES})

#添加Qt5依赖项
target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::Core Qt5::Gui)

代替qt5_wrap_ui

可以使用set(CMAKE_AUTOUIC ON) 来代替qt5_wrap_ui,但需要注意的是:

当启用AUTOUIC属性后,CMake不会自动为.ui文件生成头文件(ui_.h),而是只有代码文件中引用该ui文件的生成文件后(例如#include "ui_.h"或#include ,其中为ui里窗口的类名(区分大小写)),CMake才会自动使用uic工具处理它们。

Qt版本选择

之前一直不理解,电脑上装了多个Qt版本,CMake怎么知道在哪找,找哪一个。

通过CMake生成Qt工程时的打印信息得知,只要在调用CMake命令之前,预先设置环境变量:

CMAKE_PREFIX_PATH: "X:\Qt\5.12.6\msvc2015_64\lib\cmake"

指定CMake所要使用的Qt版本,即可。

对于VSCode,可以在Settings中,找到cmake.configureEnvironment进行设置:

CMake_QtPath

VSCode CMake 调试Qt程序,如何指定环境变量

即使正确编译生成了Qt的程序,依然无法直接调试。(在没有将Qt环境变量加入全局Path的情况下)

可以将Qt的路径,添加到CMake的Debug环境变量,在Settings中,找到cmake.debugConfig,单击Edit in settings.json。

CMake_DebugConfig

在cmake.debugConfig里增加以下代码:

"cmake.debugConfig": {
    "environment": [{
        "name": "Path",
        "value": "${env:Path};E:\\Thirdparty\\Qt\\5.12.6\\msvc2015_64\\bin;"
    }]
    }

blogroll

social