CMake系列 cmake-qt

本文详细介绍了CMake如何与Qt4和Qt5集成,包括查找Qt库的方法。重点阐述了CMake的AUTOMOC, AUTOUIC和AUTORCC特性,这些特性自动处理Qt的元对象编译(moc), UI文件编译(uic)和资源文件编译(rcc),简化了构建过程。同时,提到了在Visual Studio生成器中的特殊处理以及如何避免Qtmain.lib的自动链接。
摘要由CSDN通过智能技术生成

cmake-qt

  • 原文: cmake-qt v3.22
  • 作者: shaoguang (shaoguangcn@163.com)
  • 日期: 2021年10月25日


介绍 (Introduction)

CMake可以查找并使用Qt4和Qt5库。Qt4库由CMake附带的 FindQt4 “查找模块”(find-module)查找,而Qt5库通过Qt5附带的“配置文件包”(Config-file Packages)查找。更多关于CMake包(CMake Packages)参阅 cmake-packages,Qt CMake 手册参阅 the Qt cmake manual

Qt4和Qt5可以一起用在CMake构建系统(CMake buildsystem)中:

cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR)

project(Qt4And5)

set(CMAKE_AUTOMOC ON)

find_package(Qt5 COMPONENTS Widgets DBus REQUIRED)
add_executable(publisher publisher.cpp)
target_link_libraries(publisher Qt5::Widgets Qt5::DBus)

find_package(Qt4 REQUIRED)
add_executable(subscriber subscriber.cpp)
target_link_libraries(subscriber Qt4::QtGui Qt4::QtDBus)

CMake目标可能无法同时链接到Qt4和Qt5,如果尝试这样做可能会因为目标依赖关系而导致发出诊断提示。

Qt构建工具 (Qt Build Tools)

Qt依赖于一些捆绑的代码生成工具。比如元对象代码生成使用moc,部件的布局和填充使用uic,虚拟文件系统生成使用rcc。如果满足适当的条件,这些工具可能会被 cmake 自动调用。自动工具调用可用于Qt4和Qt5。

AUTOMOC

AUTOMOC 目标属性控制 CMake 是否检查目标中的C++文件以确定它们是否需要运行moc,并创建规则以在合适的时候执行moc

如果在头文件中找到 AUTOMOC_MACRO_NAMES 宏,moc将在此文件上运行。如果在C++实现文件中找到此宏,moc输出会放在一个根据Qt约定的名为moc_<basename>.moc的文件中。moc_<basename>.moc必须由用户使用预处理器#include在C++实现文件中包含。

moc_*.cpp*.moc文件将会生成在<AUTOGEN_BUILD_DIR>/include目录中,该目录将被自动地添加到目标的包含目录(INCLUDE_DIRECTORIES)中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值