Qt5 CMake环境配置

news/2024/5/20 4:36:20 标签: qt, C++, CMake, Qt5, ts, qrc

Qt5_CMake_0">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.cpp
    MainWindow.h
    MainWindow.cpp
    MainWindow.ui
    resources.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.cpp
    MainWindow.h
    MainWindow.cpp
    MainWindow.ui
    resources.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.niftyadmin.cn/n/5263235.html

相关文章

go mod 模式下安装beego

要在您的项目中使用Go modules来安装beego,您可以按照以下步骤进行操作: 确保您的Go版本在1.11或更高版本。您可以在终端中运行go version命令来检查您的Go版本。 创建一个新的文件夹作为您的项目根目录,并导航到该目录。 运行以下命令来初…

华为云sp2服务器系统根分区扩容后重启失败解决

lvm根分区扩容 概念: PV(物理卷:Physical Volumes) VG(物理卷组:Volume Group) LV(逻辑卷:Logical Volumes) R系 V10服务器: 显示当前Logic…

DS冲刺整理做题定理(三)图论合集

第三期,总结性地来说一下图论,也是数据结构中最核心最难的一章~ 目录 一.图的基本概念 二.图的存储及其基本操作 三.图的遍历 四.图的应用 在数学中,图是描述于一组对象的结构,其中某些对象对在某种意义上是“相关的”。这些对…

利用vue-okr-tree实现飞书OKR对齐视图

vue-okr-tree-demo 因开发需求需要做一个类似飞书OKR对齐视图的功能,参考了两位大神的代码: 开源组件vue-okr-tree作者博客地址:http://t.csdnimg.cn/5gNfd 对组件二次封装的作者博客地址:http://t.csdnimg.cn/Tjaf0 开源组件v…

注册中心选型:Eureka vs. Nacos vs. ZooKeeper

注册中心选型:Eureka vs. Nacos vs. ZooKeeper 在构建分布式系统时,选择合适的注册中心是至关重要的一步。注册中心负责服务实例的注册与发现、配置管理和协调等功能,直接影响系统的可靠性、可扩展性和灵活性。在本文中,我们将比…

IIS + Axios 跨域设置

1、服务器端设置IIS &#xff08;web.config) 即可&#xff0c;不需要对django settings.py做配置&#xff08;python manage.py runserver 才需要settings.py配置跨域&#xff0c;IIS在iis上配&#xff09; 网站根目录的web.config中加上这段&#xff1a; <httpProtocol&…

JS - 浅拷贝和深拷贝

目录 1&#xff0c;概念2&#xff0c;浅拷贝1&#xff0c;直接赋值2&#xff0c;Object.assign()3&#xff0c;扩展运算符4&#xff0c;数组 slice() 和 concat()5&#xff0c;jquery 中的 $.extend()6&#xff0c;lodash.clone() 3&#xff0c;深拷贝1&#xff0c;JSON.parse(…

flink源码分析之功能组件(五)-高可用组件

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。 本文解释高可用组件,包括两项服务,主节点选举和主节点变更通知* 高可用服务常见有两…