
>>>
CMake是一个简化跨不同平台开发项目构建过程的工具。CMake自动生成生成系统,如Makefiles和Visual Studio项目文件。CMake是一个自带的第三方工具证明文件。
CMake 备忘清单 |
|---|
CMake3.1.0带Qt 5>>>开始
find_package找到Qt附带的库和头文件。然后,您可以将这些库和头文件与target_link_libraries命令来构建基于Qt的库和应用程序。该命令自动添加适当的包含目录、编译定义、独立于位置的代码标志以及到qtmain.lib例如,Windows上的库。
>>>要构建helloworld GUI可执行文件,您需要以下内容: 为
find_package为了成功,CMake必须通过以下方式之一找到Qt安装:
【2】将CMake缓存中的Qt5_DIR设置为Qt5Config.cmake文件的位置。
# 设置CMake的最低版本要求为3.1.0cmake_minimum_required(VERSION 3.1.0)# 定义项目名称为helloworld,版本为1.0.0,使用C++语言project(helloworld VERSION 1.0.0 LANGUAGES CXX)# 设置C++标准为C++11set(CMAKE_CXX_STANDARD 11)# 确保所指定的C++标准是必需的set(CMAKE_CXX_STANDARD_REQUIRED ON)# 开启自动处理MOC(元对象编译器)、资源文件(RCC)和UI文件(UIC)set(CMAKE_AUTOMOC ON)set(CMAKE_AUTORCC ON)set(CMAKE_AUTOUIC ON)# 如果CMake版本低于3.7.0,则设置包含当前目录的选项为开启if(CMAKE_VERSION VERSION_LESS "3.7.0") set(CMAKE_INCLUDE_CURRENT_DIR ON)endif()# 找到Qt5库中的Widgets组件,并且要求这个组件是必需的find_package(Qt5 COMPONENTS Widgets REQUIRED)# 定义可执行文件helloworld,并指定其源文件和资源文件add_executable(helloworld mainwindow.ui # UI文件 mainwindow.cpp # 主窗口的源文件 main.cpp # 主程序的源文件 resources.qrc # 资源文件)# 将Qt5的Widgets库链接到helloworld可执行文件target_link_libraries(helloworld Qt5::Widgets)>>>加载的每个Qt模块都定义了一个CMake库目标。目标名以Qt5:::开头,后面是模块名。比如:Qt5::Core,Qt5::Gui。将库目标的名称传递给target_link_libraries以使用相应的库。 注意:从Qt 5.15开始,CMake目标也可以作为Qt::Core、Qt::Gui等等使用。这简化了编写可以在Qt 5和Qt 6上运行的CMake代码。 导入的目标使用与配置Qt时相同的配置创建。那就是: 【1】如果用-debug开关配置了Qt,则会创建一个带有调试配置的导入目标。 【2】如果Qt是用-release开关配置的,则会创建一个带有release配置的导入目标。 【3】如果Qt是用-debug-and-release开关配置的,那么导入的目标是用发布和调试配置创建的。 如果您的项目具有自定义的CMake构建配置,您必须将您的自定义配置映射到debug或release Qt配置。
# 查找Qt5库中的Core组件,并且要求这个组件是必需的find_package(Qt5 COMPONENTS Core REQUIRED)# 设置覆盖率编译选项,将Release配置的编译标志与覆盖率选项结合set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage")# 设置属性,将Qt5::Core的COVERAGE配置映射到RELEASE配置# 这意味着在覆盖率构建时使用Release版本的Qt5::Coreset_target_properties(Qt5::Core PROPERTIES MAP_IMPORTED_CONFIG_COVERAGE "RELEASE")>>>用find_package加载的Qt模块设置各种变量。 例如,find _ package(Qt5 COMPONENTS Widgets)成功时,会使以下变量可用:
变量 | 描述 |
|---|---|
Qt5Widgets_COMPILE_DEFINITIONS | 根据库进行构建时要使用的编译定义列表。 |
Qt5Widgets_DEFINITIONS | 根据库进行构建时要使用的定义列表。 |
Qt5Widgets_EXECUTABLE_COMPILE_FLAGS | 根据库生成可执行文件时使用的标志字符串。 |
Qt5Widgets_FOUND | 描述是否成功找到模块的布尔值。 |
Qt5Widgets_INCLUDE_DIRS | 构建库时要使用的包含目录列表。 |
Qt5Widgets_LIBRARIES | 模块导入目标的名称:Qt5::Widgets |
Qt5Widgets_PRIVATE_INCLUDE_DIRS | 构建库和使用私有Qt API时使用的私有include目录列表。 |
Qt5Widgets_VERSION_STRING | 包含模块版本的字符串。 |
>>>此外,还有一些变量与特定的包无关,而是与Qt安装本身有关。
变量 | 描述 |
|---|---|
QT_DEFAULT_MAJOR_VERSION | 在混合Qt 5和Qt 6项目的情况下,控制qt_ commands转发到的Qt版本的整数。在相应的find_package()调用之前,需要将它设置为5或6。如果设置为5,以qt_开头的命令将调用以qt5_开头的命令。如果设置为6,它们将调用以qt6_开始的对应方。如果没有设置,第一个find_package调用将定义默认版本。这个功能是在Qt 5.15中添加的。 |
QT_LIBINFIX | 用-libinfix配置Qt时,保存库名中使用的中缀的字符串。 |
QT_NO_CREATE_VERSIONLESS_FUNCTIONS | 从Qt 5.15开始,模块不仅定义了以qt5_开头的命令,还定义了以qt_开头的命令。可以在find_package之前设置QT_NO_CREATE_VERSIONLESS_TARGETS 来防止这种情况。 |
QT_NO_CREATE_VERSIONLESS_TARGETS | 从Qt 5.15开始,模块不仅定义了以Qt 5:::开头的目标,还定义了以Qt:::开头的目标。可以在find_package之前设置QT_NO_CREATE_VERSIONLESS_TARGETS 来防止这种情况。 |
QT_VISIBILITY_AVAILABLE | 在Unix上,描述Qt库和插件是否用-fvisibility=hidden编译的布尔值。这意味着只导出选定的符号。 |
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 | 对输入文件调用moc |
qt_add_resources | 指定要为静态Qt构建导入的自定义插件集 |
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语言学家.ts文件到.qm管理文件 |
qt5_create_translation | 建立Qt语言学家翻译工具链 |
Qt5::RemoteObjects | |
qt5_generate_repc | 从Qt远程对象创建C++类型.rep文件 |
Qt5::Widgets | |
qt5_wrap_ui | 为创建源.ui文件 |
qt_wrap_ui | 为创建源.ui文件 |
>>>在这里分享一下目前个人使用的串口工具和TCP调试助手工具,以及sql工具。喜欢的码友记得【转存】到个人盘,方便下载和预览。 【超级会员V1】通过百度网盘分享的文件:虚拟串口+串口助...等3个文件 链接:https://pan.baidu.com/s/1Ku_Nj4RKGDGiby9g9-T9rw?pwd=w87G 提取码:w87G 复制这段内容打开「百度网盘APP 即可获取」
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。