图片设计师网站,wordpress外观插件,页面设计师岗位职责,昆山做网站的公昆山做网站的公司司使用 CMake 构建
CMake 是一款用于简化跨不同平台开发项目的构建流程的工具。 CMake 可自动生成构建系统#xff0c;如 Makefile 和 Visual Studio 项目文件。 CMake 是一个第三方工具#xff0c;有自己的文档。 本主题介绍如何在 Qt 5 中使用 CMake 3.1.0。
开始使用 CMak…使用 CMake 构建
CMake 是一款用于简化跨不同平台开发项目的构建流程的工具。 CMake 可自动生成构建系统如 Makefile 和 Visual Studio 项目文件。 CMake 是一个第三方工具有自己的文档。 本主题介绍如何在 Qt 5 中使用 CMake 3.1.0。
开始使用 CMake
使用 find_package 查找 Qt 附带的库和头文件。 然后您可以使用 target_link_libraries 命令来使用这些库和头文件以构建基于 Qt 的库和应用程序。 例如该命令会自动添加适当的包含目录、编译定义、位置无关代码标志并链接到 Windows 上的 qtmain.lib 库。
构建 GUI 可执行文件
要构建 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(helloworldmainwindow.uimainwindow.cppmain.cppresources.qrc
)target_link_libraries(helloworld Qt5::Widgets)
要使 find_package 成功CMake 必须通过以下方式之一找到 Qt 安装
将 CMAKE_PREFIX_PATH 环境变量设置为 Qt 5 安装前缀。这是推荐的方法。将 CMake 缓存中的 Qt5_DIR 设为 Qt5Config.cmake 文件的位置。
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 配置时的配置相同。也就是说
如果 Qt 是用 -debug 开关配置的则会创建一个带有 DEBUG 配置的导入目标。如果使用 -release 开关配置 Qt则会创建一个具有 RELEASE 配置的导入目标。如果使用 -debug-and-release 开关配置 Qt则会同时创建 RELEASE 和 DEBUG 配置的导入目标。
如果您的项目有自定义 CMake 编译配置则必须将自定义配置映射到调试或发布 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 变量参考
模块变量
使用 find_package 加载的 Qt 模块会设置各种变量。
注意您很少需要直接访问这些变量。 链接模块等常见任务应通过每个模块定义的库目标来完成。
例如find_package(Qt5 COMPONENTS Widgets)Qt5 COMPONENTS Widgets成功加载后将提供以下变量
VariableDescriptionQt5Widgets_COMPILE_DEFINITIONS编译定义列表用于根据该库进行编译。Qt5Widgets_DEFINITIONS对照库构建时使用的定义列表。Qt5Widgets_EXECUTABLE_COMPILE_FLAGS根据程序库构建可执行文件时使用的标志字符串。Qt5Widgets_FOUND一个布尔值用于描述是否成功找到模块。Qt5Widgets_INCLUDE_DIRS针对程序库构建时使用的 include 目录列表。Qt5Widgets_LIBRARIES模块导入目标的名称 Qt5::WidgetsQt5Widgets_PRIVATE_INCLUDE_DIRS针对程序库构建和使用私有 Qt API 时要使用的私有 include 目录列表。Qt5Widgets_VERSION_STRING包含模块版本的字符串。
对于使用 find_package 找到的所有软件包这些变量都有对应的变量它们区分大小写。
安装变量
此外还有一些变量与特定软件包无关而是与 Qt 安装本身有关。
QT_DEFAULT_MAJOR_VERSION一个整数用于控制 Qt 5 和 Qt 6 混合项目中 qt_ 命令转发的 Qt 版本。 需要在调用相应的 find_package() 之前将其设置为 5 或 6。 如果设置为 5以 qt_ 开始的命令将调用以 qt5_ 开始的对应版本。 如果设置为 6则会调用以 qt6_ 开始的对应命令。 如果未设置第一次 find_package 调用将定义默认版本。 此功能在 Qt 5.15 中添加。QT_LIBINFIX当 Qt 使用 -libinfix 配置时用于保存库名中使用的后缀的字符串。QT_NO_CREATE_VERSIONLESS_FUNCTIONS自 Qt 5.15 起模块不仅定义以 qt5_ 开头的命令还定义以 qt_ 开头的命令。 你可以在 find_package 之前设置 QT_NO_CREATE_VERSIONLESS_FUNCTIONS以防止出现这种情况。QT_NO_CREATE_VERSIONLESS_TARGETS自 Qt 5.15 起模块不仅定义以 Qt5:: 开头的目标还定义以 Qt:: 开头的目标。 你可以在 find_package 之前设置 QT_NO_CREATE_VERSIONLESS_TARGETS以防止出现这种情况。QT_VISIBILITY_AVAILABLE在 Unix 上一个布尔值用于说明 Qt 库和插件在编译时是否使用了 -fvisibilityhidden。 这意味着只导出选定的符号。
CMake 命令参考 Qt5::Core qt5_add_big_resources 将大型二进制资源编译成目标代码 qt5_add_binary_resources 从 Qt 资源文件列表中创建 RCC 文件 qt5_add_resources 将二进制资源编译成源代码 qt5_generate_moc 在输入文件上调用 moc qt5_import_plugins 为静态 Qt 构建指定要导入的自定义插件集 qt5_wrap_cpp 从源代码创建 .moc 文件 qt_add_big_resources 将大型二进制资源编译成目标代码 qt_add_binary_resources 从 Qt 资源文件列表中创建 RCC 文件 qt_add_resources 将二进制资源编译成源代码 qt_generate_moc 在输入文件上调用 moc qt_import_plugins 为静态 Qt 构建指定要导入的自定义插件集 qt_wrap_cpp 从源代码创建 .moc 文件 Qt5::DBus qt_add_dbus_adaptor 为 D-Bus 接口生成适配器类 qt_add_dbus_interface 为 D-Bus 接口描述文件生成实现接口的 C 源代码 qt_add_dbus_interfaces 为 D-Bus 接口描述文件生成实现接口的 C 源代码 qt_generate_dbus_interface 从头文件生成 D-Bus 接口 Qt5::LinguistTools qt5_add_translation 将 Qt Linguist .ts 文件编译成 .qm 文件 qt5_create_translation 设置 Qt Linguist 翻译工具链 Qt5::RemoteObjects qt5_generate_repc 从 Qt Remote Objects .rep 文件创建 C 类型 Qt5::Widgets qt5_wrap_ui 为 .ui 文件创建源代码 qt_wrap_ui 为 .ui 文件创建源代码
CMake命令
cmake-variables(7) — CMake 3.30.4 Documentation
CMake 变量
cmake-variables(7) — CMake 3.30.4 Documentation CMake Command Reference | Build with CMake 5.15.17 (qt.io)