Qt与CMakeLists.txt
版本:Qt6.5.3
文件--->新建项目(new project)
这是QtCreator自动生成的CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.19)
project(test LANGUAGES CXX)find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets)qt_standard_project_setup()qt_add_executable(testWIN32 MACOSX_BUNDLEmain.cppmainwindow.cppmainwindow.hmainwindow.ui
)target_link_libraries(testPRIVATEQt::CoreQt::Widgets
)include(GNUInstallDirs)install(TARGETS testBUNDLE DESTINATION .RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)qt_generate_deploy_app_script(TARGET testOUTPUT_SCRIPT deploy_scriptNO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})
这份 CMakeLists.txt 文件配置了一个使用 Qt 6 的 C++ 图形界面应用程序项目。
项目基础配置
cmake_minimum_required(VERSION 3.19)
project(test LANGUAGES CXX)
cmake_minimum_required
指定构建此项目所需的 CMake 最低版本为 3.19,确保兼容性和功能支持。project
定义了项目名称为test
,并指定项目语言为 C++(CXX)。
查找 Qt6 包
find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets)
查找 Qt6 库,要求版本至少为 6.5。
REQUIRED
表示如果找不到指定的包或组件,配置过程将终止并报错。COMPONENTS Core Widgets
指定需要 Qt6 的 Core 和 Widgets 模块。
COMPONENTS : 组件;部件
Qt 项目标准设置
qt_standard_project_setup()
这是 Qt 提供的宏,用于为项目设置一系列通用的构建策略和标准配置,例如自动包含 moc、uic、rcc 等 Qt 元对象编译器。
创建可执行文件
qt_add_executable(testWIN32 MACOSX_BUNDLEmain.cppmainwindow.cppmainwindow.hmainwindow.ui
)
qt_add_executable
是 Qt 对 CMake 标准add_executable
的增强,用于创建名为test
的可执行文件。WIN32
和MACOSX_BUNDLE
是平台相关选项:WIN32
在 Windows 上表示创建一个 GUI 应用程序(非控制台窗口)。MACOSX_BUNDLE
在 macOS 上表示将应用打包为.app
捆绑包。
列出的源文件和头文件(如
main.cpp
,mainwindow.cpp
)以及界面文件(mainwindow.ui
)会被 Qt 的构建系统自动处理(例如,ui
文件由uic
处理)。
链接 Qt 库
target_link_libraries(testPRIVATEQt::CoreQt::Widgets
)
将 Qt 的 Core 和 Widgets 模块链接到可执行文件
test
。PRIVATE
表示这些库仅用于构建test
目标本身,而不会传递给可能依赖test
的其他目标。
安装规则与部署脚本
include(GNUInstallDirs)
install(TARGETS testBUNDLE DESTINATION .RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)qt_generate_deploy_app_script(TARGET testOUTPUT_SCRIPT deploy_scriptNO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})
安装配置:
include(GNUInstallDirs)
包含 GNU 标准安装目录的定义(如CMAKE_INSTALL_BINDIR
通常为bin
)。install(TARGETS ...)
指定目标test
的安装规则:BUNDLE
(macOS 捆绑包)、RUNTIME
(可执行文件)和LIBRARY
分别安装到不同目录。
部署脚本:
qt_generate_deploy_app_script
生成一个用于部署应用程序的脚本,该脚本会收集运行应用所需的 Qt 库等资源。(qt生成部署软件脚本)生成的脚本通过
install(SCRIPT ...)
在安装时执行。