点击上方"蓝字"关注我们
01、CMake
CMake是一个简化跨不同平台开发项目构建过程的工具。CMake自动生成生成系统,如Makefiles和Visual Studio项目文件。
CMake是一个自带的第三方工具证明文件。
| CMake 备忘清单 |
|---|
02、如何使用CMake3.1.0带Qt 5
开始
find_package找到Qt附带的库和头文件。然后,您可以将这些库和头文件与target_link_libraries命令来构建基于Qt的库和应用程序。该命令自动添加适当的包含目录、编译定义、独立于位置的代码标志以及到qtmain.lib例如,Windows上的库。
03、构建GUI执行文件
要构建helloworld GUI可执行文件,您需要以下内容:
为
find_package为了成功,CMake必须通过以下方式之一找到Qt安装:
- 【1】将CMAKE_PREFIX_PATH环境变量设置为Qt 5安装前缀。这是推荐的方式。
【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)
04、导入库目标
加载的每个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")
05、模块变量
用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 | 包含模块版本的字符串。 |
06、安装变量
此外,还有一些变量与特定的包无关,而是与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编译的布尔值。这意味着只导出选定的符号。 |
07、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 | 对输入文件调用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个文件
提取码:w87G
复制这段内容打开「百度网盘APP 即可获取」
故我在
点击下方卡片 关注我