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
Qt版本选择
之前一直不理解,电脑上装了多个Qt版本,CMake怎么知道在哪找,找哪一个。
通过CMake生成Qt工程时的打印信息得知,只要在调用CMake命令之前,预先设置环境变量:
CMAKE_PREFIX_PATH: "X:\Qt\5.12.6\msvc2015_64\lib\cmake"
指定CMake所要使用的Qt版本,即可。
对于VSCode,可以在Settings中,找到cmake.configureEnvironment进行设置:
VSCode CMake 调试Qt程序,如何指定环境变量
即使正确编译生成了Qt的程序,依然无法直接调试。(在没有将Qt环境变量加入全局Path的情况下)
可以将Qt的路径,添加到CMake的Debug环境变量,在Settings中,找到cmake.debugConfig,单击Edit in settings.json。
在cmake.debugConfig里增加以下代码:
"cmake.debugConfig": {
"environment": [{
"name": "Path",
"value": "${env:Path};E:\\Thirdparty\\Qt\\5.12.6\\msvc2015_64\\bin;"
}]
}