开始采用
find_package
以定位 Qt 随附的库和 Header (头) 文件。然后,可以使用这些库和 Header (头) 文件采用
target_link_libraries
命令来构建基于 Qt 的库和应用程序。此命令自动添加适当包括目录、编译定义、位置无关代码标志并链接到
qtmain.lib
库在 Windows,例如。
要构建 helloworld GUI 可执行文件,需要以下:
cmake_minimum_required(VERSION 3.1.0) project(helloworld VERSION 1.0.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) if(CMAKE_VERSION VERSION_LESS "3.7.0") set(CMAKE_INCLUDE_CURRENT_DIR ON) endif() find_package(Qt5 COMPONENTS Widgets REQUIRED) add_executable(helloworld mainwindow.ui mainwindow.cpp main.cpp resources.qrc ) target_link_libraries(helloworld Qt5::Widgets)
For
find_package
要取得成功,
CMake
必须按以下方式之一找到 Qt 安装:
CMAKE_PREFIX_PATH
环境变量为 Qt 5 安装前缀。这是推荐方式。
Qt5_DIR
在
CMake
缓存为位置对于
Qt5Config.cmake
文件。
The
CMAKE_AUTOMOC
设置自动运行 MOC (元对象编译器) 当要求时。更多细节,见
CMake AUTOMOC 文档编制
.
被加载的每一 Qt 模块定义一 CMake 库目标。目标名称开头采用
Qt5::
,紧随其后的是模块名称。例如:
Qt5::Core
,
Qt5::Gui
。将库目标的名称传递给
target_link_libraries
以使用各自的库。
注意:
从 Qt 5.15 起,CMake 目标也可用作
Qt::Core
,
Qt::Gui
,等等。这简化了编写可以与 Qt 5 和 Qt 6 一起使用的 CMake 代码的工作。
采用相同配置创建导入目标,因为当有配置 Qt 时。即:
-debug
开关,则采用 DEBUG 配置创建导入目标。
-release
开关,则采用 RELEASE 配置创建导入目标。
-debug-and-release
开关,则采用 RELEASE 和 DEBUG 配置创建导入目标。
若您的工程有自定义
CMake
构建配置,必须将自定义配置映射到 debug (调试) 或 release (发行) Qt 配置。
find_package(Qt5 COMPONENTS Core REQUIRED) set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage") # set up a mapping so that the Release configuration for the Qt imported target is # used in the COVERAGE CMake configuration. set_target_properties(Qt5::Core PROPERTIES MAP_IMPORTED_CONFIG_COVERAGE "RELEASE")构建采用 CMake CMake 变量参考