环境
系统:Windows 10专业版
CMake版本:3.31.5
Visual Studio版本:2019
Qt版本:5.15.2
准备工作
1.安装CMake,并确保CMake的运行程序添加到环境变量中;
2.安装Visual Studio 2019,并确保勾选了“使用C++的桌面开发”;
3.安装通信灵码IDE,并登录(非必须,可以用Visual Studio Code代替,或直接用CMD);
4.安装Qt5,并记住其目录。
操作步骤
1.在“CMake-Qt程序编译”的基础上,在“CMake”目录下,新建一个名为“Widget”的文件夹,然后在“Widget”文件夹中,添加下面三个文件:
Widget.cmake
# 使用GLOB_RECURSE命令递归查找当前目录下所有.h头文件,存储到HEADER_WIDGETS变量中
file(GLOB_RECURSE HEADER_WIDGETS "${CMAKE_CURRENT_LIST_DIR}/*.h")
# 使用GLOB_RECURSE命令递归查找当前目录下所有.cpp源文件,存储到SRC_WIDGETS变量中
file(GLOB_RECURSE SRC_WIDGETS "${CMAKE_CURRENT_LIST_DIR}/*.cpp")
ModuleWidget.h
// 和CMakeLists.txt一个目录
#include <QWidget> // 包含Qt基础窗口部件类// 自定义模块窗口部件类,继承自QWidget
class ModuleWidget : public QWidget
{Q_OBJECT // 启用Qt的信号槽机制public:// 构造函数,parent参数指定父对象,默认为nullptrModuleWidget(QWidget* parent = nullptr);};
ModuleWidget.cpp
// 和CMakeLists.txt一个目录
#include <QWidget> // 包含Qt基础窗口部件类// 自定义模块窗口部件类,继承自QWidget
class ModuleWidget : public QWidget
{Q_OBJECT // 启用Qt的信号槽机制public:// 构造函数,parent参数指定父对象,默认为nullptrModuleWidget(QWidget* parent = nullptr);};
添加完成,目录结构如下图所示:

2.修改CMakeLists.txt文件,内容如下:
CMakeLists.txt
cmake_minimum_required(VERSION 3.15.0)project(study_cmake)set(CMAKE_AUTOMOC ON)find_package(Qt5 COMPONENTS Widgets REQUIRED)include(Widget/Widget.cmake)add_executable(${PROJECT_NAME} main.cpp ${SRC_WIDGETS} ${HEADER_WIDGETS})target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Widgets)target_include_directories("${PROJECT_NAME}" PRIVATE ${CMAKE_CURRENT_LIST_DIR}/Wid“moget)
3.修改MainWidget.cpp,修改后内容如下:
MainWidget.cpp
// 和CMakeLists.txt一个目录
#include "MainWidget.h" // 包含MainWidget类声明
#include <QDebug> // 包含调试输出功能
#include "ModuleWidget.h" // 包含ModuleWidget类声明// MainWidget构造函数实现
MainWidget::MainWidget(QWidget* parent): QWidget(parent) // 调用父类QWidget的构造函数
{// 输出当前函数名到调试信息qDebug() << __FUNCTION__;// 设置窗口大小为100x100像素this->resize(100, 100);// 创建ModuleWidget实例,this作为父对象ModuleWidget* pWidget = new ModuleWidget(this);
}
4.点击菜单栏中的“终端”->“新建终端”,然后在命令行中分别执行下面两条命令(等第一条执行完,再执行第二条):
//终端路径为CMakeLists.txt所在目录
//其中CMAKE_PREFIX_PATH的值请修改成实际安装的目录
cmake -S . -B WIN -DCMAKE_PREFIX_PATH=C:\Qt\5.15.2\msvc2019_64\lib\cmakecmake --build .\WIN\
执行成功,如下图所示:
