Qt5 CMake环境配置

Qt5 CMake环境配置

设置Qt路径

有两种方法

  • Qt5_DIR,使用这个变量,必须把路径设置到Qt5Config.cmake所在文件夹,也就是安装目录下的lib/cmake/Qt5
  • CMAKE_PREFIX_PATH,只需要设置到安装目录就可以了,这个目录就是binlib等文件夹所在目录
# set(CMAKE_PREFIX_PATH "E:\\ProgramFiles\\Qt\\5.15.2\\msvc2019_64;${CMAKE_PREFIX_PATH}")
# set(Qt5_DIR "D:\\ProgramFiles\\Qt\\5.15.2\\5.15\\msvc_2015_64\\lib\\cmake\\Qt5")
set(CMAKE_PREFIX_PATH "D:\\ProgramFiles\\Qt\\5.15.2\\5.15\\msvc_2015_64;${CMAKE_PREFIX_PATH}")

启用代码生成

用于处理信号槽代码生成、资源文件生成、UI文件生成

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

查找需要的库

LinguistTools是为了处理ts文件用的,无需链接

find_package(Qt5 COMPONENTS Core Widgets LinguistTools REQUIRED)
``链接的时候可以直接使用`Qt::`作为前缀,不需要`Qt5::````cmake
target_link_libraries(${PROJECT_NAME} PUBLIC Qt::Core Qt::Widgets)

添加翻译文件

使用qt5_create_translation

从当前目录中的源文件中递归查找Qt翻译,并使用lupdate生成或更新Demo_en.ts和Demo_fr.ts文件。将所述文件编译为构建目录中的Demo_fr.qm和Demo_fr.qm文件:

set(TS_FILES Demo_en.ts Demo_fr.ts)
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})

QM_FILES是输出变量

添加编译文件

对于qrc文件和ui文件,直接add_executable就可以了

add_executable(${PROJECT_NAME}main.cppMainWindow.hMainWindow.cppMainWindow.uiresources.qrc${QM_FILES}
)

源码

cmake_minimum_required(VERSION 3.18)
project("Demo" VERSION 1.0.0 LANGUAGES CXX)# set(CMAKE_PREFIX_PATH "E:\\ProgramFiles\\Qt\\5.15.2\\msvc2019_64;${CMAKE_PREFIX_PATH}")
# set(Qt5_DIR "D:\\ProgramFiles\\Qt\\5.15.2\\5.15\\msvc_2015_64\\lib\\cmake\\Qt5")
set(CMAKE_PREFIX_PATH "D:\\ProgramFiles\\Qt\\5.15.2\\5.15\\msvc_2015_64;${CMAKE_PREFIX_PATH}")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()set(CMAKE_INCLUDE)find_package(Qt5 COMPONENTS Core Widgets LinguistTools REQUIRED)
message(STATUS "${Qt5Widgets_LIBRARIES}")
message(STATUS "${Qt5Core_LIBRARIES}")set(TS_FILES Demo_en.ts Demo_fr.ts)qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
message(STATUS "QM File List: ${QM_FILES}")add_executable(${PROJECT_NAME}main.cppMainWindow.hMainWindow.cppMainWindow.uiresources.qrc${QM_FILES}
)target_include_directories(${PROJECT_NAME} PUBLIC ${Qt5Widgets_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PUBLIC Qt::Core Qt::Widgets)

参考

Qt5文档

配置可视化调试

使用GlobalVisualizersDirectory

Windows下

C:\Users\YourName\.vscode\extensions\ms-vscode.cpptools-1.18.5-win32-x64\debugAdapters\vsdbg\bin\Visualizers\

Linux下

~\.vscode\extensions\ms-vscode.cpptools-1.18.5-win32-x64\debugAdapters\vsdbg\bin\Visualizers\

打开目录可以发现,里面已经存在了一些natvis文件

natvis

借用EveryThing等工具,搜索qt5.natvisqt6.natvisSTL.natvis等文件,复制到这个文件夹内

visualizerFile

配置visualizerFile参数,natvis文件只能指定一个

{"cmake.debugConfig": {"visualizerFile": "${workspaceFolder}/qt5.natvis"}
}

这个参数本来属于launch.json,因为我使用的是cmake插件,所以配置的是cmake

lanuch.json应该参考下面的代码,其实是一样的,而且还可以多配置一个showDisplayString

{"name": "C++ Launch (Windows)","type": "cppvsdbg","request": "launch","program": "C:\\app1\\Debug\\app1.exe","symbolSearchPath": "C:\\Symbols;C:\\SymbolDir2","externalConsole": true,"logging": {"moduleLoad": false,"trace": true},"visualizerFile": "${workspaceFolder}/my.natvis","showDisplayString": true
}

效果展示

可以看到QString这样的类型已经正确显示

visual debug

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/222310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenStack和Docker结合?为何现在流行?

为何现在流行OpenStack和Docker结合? 结合的好处 1、资源管理与调度灵活: OpenStack提供了完善的虚拟机管理能力,而Kubernetes(使用Docker作为容器运行环境)在容器调度方面非常高效。将两者结合,可以实现…

RNN介绍及Pytorch源码解析

介绍一下RNN模型的结构以及源码,用作自己复习的材料。 RNN模型所对应的源码在:\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。 RNN的模型图如下: 源码注释中写道,RNN的数学公式: 表示在时刻的隐藏状态…

ES6学习(三):Set和Map容器的使用

Set容器 set的结构类似于数组,但是成员是唯一且不会重复的。 创建的时候需要使用new Set([])的方法 创建Set格式数据 let set1 new Set([])console.log(set1, set1)let set2 new Set([1, 2, 3, 4, 5])console.log(set2, set2) 对比看看Set中唯一 let set3 new Set([1, 1,…

职场记5:勇闯深圳,追梦职场

上一篇《职场记4:我在这家公司的美好时光》 为了追求更好的发展,我毅然决然地离开了令我感到无比安逸的工作环境,去大城市深圳闯一闯。这个城市对我来说充满了未知和挑战,但我相信只有勇敢地面对未知,才能找到更好的自…

多架构容器镜像构建实战

最近在一个国产化项目中遇到了这样一个场景,在同一个 Kubernetes 集群中的节点是混合架构的,也就是说,其中某些节点的 CPU 架构是 x86 的,而另一些节点是 ARM 的。为了让我们的镜像在这样的环境下运行,一种最简单的做法…

Rust语言基础语法使用

1.安装开发工具: RustRover JetBrains: Essential tools for software developers and teams 下载: RustRover: Rust IDE by JetBrains 下载成功后安装并启动RustRover 安装中文语言包插件 重启RustRover生效

vue3引入echarts正确姿势

echarts文档地址: echarts官网地址 echarts配置手册 echarts 模板地址 1、安装 (1)安装echarts包 npm install echarts --save 或者 cnpm install echarts --save(2)安装vue echarts工具包 npm install echart…

持续集成交付CICD:Jenkins使用基于SaltStack的CD流水线下载Nexus制品

目录 一、理论 1.salt常用命令 二、实验 1.SaltStack环境检查 2.Jenkins使用基于SaltStack的CD流水线下载Nexus制品 二、问题 1.salt未找到命令 2.salt简单测试报错 3. wget输出日志过长 一、理论 1.salt常用命令 (1)salt 命令 该 命令执行s…

Linux-----9、echo命令

# echo命令 echo会将输入的字符串送往标准输出,并在最后加上换行符。 可以理解为打印字符串。 常见选项: -n :不输出最后的换行符“\n” -e:解释转义字符(字符串中出现\n、\t等特殊字符,则特别加以处理&a…

蓝牙物联网智慧物业解决方案

蓝牙物联网智慧物业解决方案是一种利用蓝牙技术来提高物业管理和服务效率的解决方案。它通过将蓝牙技术与其他智能设备、应用程序和云服务相结合,为物业管理和服务提供更便捷、高效和智能化的支持。 蓝牙物联网智慧物业解决方案包括: 1、设备管理&#…

JupyterNotebook安装依赖 使用conda环境

怎么使用JupyterNotebook安装依赖?(使用conda环境?) 预装的jupyter中有conda,可以进入终端执行相关命令 预装的Jupyter,目标用户是轻度的Jupyter用户,如果想使用conda的多环境等高级功能&#x…

【PostgreSQL】从零开始:(五)认识数据库-数据的相关概念

【PostgreSQL】从零开始:(五)认识数据库-数据的相关概念 什么是数据库数据库包含哪些东西数据库技术构成数据库系统SQL语言数据库访问技术 在正式开始讲PostgreSQL内容之前,我们要先要了解数据的相关概念 什么是数据库 数据库由一批数据构成…

java基础知识③:反射和注解以及Java 8的新特性

目录 一、反射和注解 1、反射 2、注解 二、Java 8的新特性 1、Lambda 表达式: 2、Stream API: 3、函数式接口: 4、方法引用: 5、接口的默认方法和静态方法: 6、新的时间日期API(Date/Time API)&…

文心一言4.0使用指南

文心一言4.0使用指南 在线体验:体验地址 一、文心一言能力如何 不管百度公司如何,就AI大模型来说,文心一言和其他国内产品相比,还是具有相当大的优势的,可以说是在个人的使用方面,我认为是最顶级的。 但…

Unity中的ShaderToy

文章目录 前言一、ShaderToy网站二、ShaderToy基本框架1、我们可以在ShaderToy网站中,这样看用到的GLSL文档2、void mainImage 是我们的程序入口,类似于片断着色器3、fragColor作为输出变量,为屏幕每一像素的颜色,alpha一般赋值为…

微信小程序单图上传和多图上传

图片上传主要用到 1、wx.chooseImage(Object object) 从本地相册选择图片或使用相机拍照。 参数 Object object 属性类型默认值必填说明countnumber9否最多可以选择的图片张数sizeTypeArray.<string>[original, compressed]否所选的图片的尺寸sourceTypeArray.<s…

从开源项目中学习如何自定义 Spring Boot Starter 小组件

前言 今天参考的开源组件Graceful Response——Spring Boot接口优雅响应处理器。 具体用法可以参考github以及官方文档。 基本使用 引入Graceful Response组件 项目中直接引入如下maven依赖&#xff0c;即可使用其相关功能。 <dependency><groupId>com.feiniaoji…

Leetcode 2454. 下一个更大元素 IV

Leetcode 2454. 下一个更大元素 IV题目 给你一个下标从 0 开始的非负整数数组 nums 。对于 nums 中每一个整数&#xff0c;你必须找到对应元素的 第二大 整数。如果 nums[j] 满足以下条件&#xff0c;那么我们称它为 nums[i] 的 第二大 整数&#xff1a; j >nums[j] > nu…

螺旋矩阵算法(leetcode第59题)

题目描述&#xff1a; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1&#xff1a;输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 示例 2&#xff1a;输入&#…

电商API代码如何接入写

要接入一个API&#xff0c;通常需要遵循以下步骤&#xff1a; 1. 【了解API文档】&#xff1a;首先&#xff0c;需要了解你想要接入的API的文档。这些文档通常会包含关于如何使用该API的重要信息&#xff0c;比如基本的请求格式、可用的端点&#xff08;endpoints&#xff09;…