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)中。
- 这与CMake 3.7及以下版本不同,详细信息参阅相关文档。
- 如果有“多配置生成器”(multi configuration generators),包含目录将是
AUTOGEN_BUILD_DIR/include_<CONFIG>
。 - 参阅 AUTOGEN_BUILD_DIR<