CMake编译Qt程序+UI+Resources

本文介绍了如何使用CMake编译包含Qt UI和资源文件的程序。主要内容包括CMakeLists.txt的编写,添加Qt库,处理.ui文件和资源文件.qrc。CMake可以自动生成moc_*.cpp文件,并将.ui文件转换为ui_*.h,同时详细阐述了不同Qt模块的添加方法以及资源文件的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天给大家讲解一下Cmake如何编译Qt程序。
这里说的Qt程序不只是用QtCreator写出来的程序,当然也可以是文本编辑器…。这里说的Qt程序是指,QCoreApplication,QApplication( QMainWindow,QWidget,QDialogue)类型的程序。

CMake是一个跨平台的非常通用的于编译器,用cmake命令可以生产出makefile,在利用make编译程序,这里不多说了,大家比较了解。当然首先得有CMakeLists.txt,我们手动建立一个.txt文件或者利用QtCreator新建一个CMake工程都可以,下面就来看一下,如何写这个CMakeLists,好让Qt程序能编译通过。

  1. 一个CMakeLists.txt的完整示例与分块讲解
  2. 如何添加Qt库
  3. 如何添加 .ui文件与资源文件.qrc

    1. 一个CMakeLists.txt的完整示例与分块讲解

project(project_test)
cmake_minimum_required(VERSION 2.8)
#set(CMAKE_BUILD_TYPE "Release") #using CMAKE_BUILD_TYPE to set the cmake method [Debug | Release]
# CMAKE_CXX_FLAGS CMake C++
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_
### 如何在 CMakeLists.txt 中配置 QT 项目用于 Visual Studio #### 设置基本环境 为了使CMake识别Qt模块,在`CMakeLists.txt`文件顶部应找到并包含必要的Qt组件。这通常涉及使用`find_package(Qt5 COMPONENTS ...)`命令来定位所需的Qt模块。 ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject VERSION 1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找 Qt5 并指定使用的组件,例如 Core 和 Widgets find_package(Qt5 REQUIRED COMPONENTS Core Widgets) ``` #### 定义可执行文件或库 定义要构建的目标(如应用程序),并将目标链接到相应的Qt库上。对于GUI应用来说,通常是Widgets或其他图形界面相关的模块。 ```cmake add_executable(${PROJECT_NAME} main.cpp mainwindow.ui) target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Widgets) ``` #### 处理资源文件 (qrc) 如果项目中有`.qrc`资源文件,则需告知CMake处理这些资源: ```cmake qt5_add_resources(TARGET ${PROJECT_NAME} PREFIX / FILES resources.qrc ) ``` #### UI 文件转换 如果有UI设计文件(`*.ui`),则需要让CMake知道如何将其编译成对应的类实现代码: ```cmake qt5_wrap_ui(UI_HEADERS mainwindow.h) include_directories(${CMAKE_CURRENT_BINARY_DIR}) ``` #### 自动MOC预处理器支持 确保开启自动moc功能以便于处理信号槽机制等特性: ```cmake set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) ``` 以上设置适用于大多数基于Qt的应用程序开发场景,并特别针对VisualStudio进行了优化[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值