CLion搭建Qt开发环境,并解决目录重构问题(最新版)
序言
Qt版本不断更新,QtCreator也不断更新。在Qt4和Qt5时代,我一直认为开发Qt最好的IDE就是自带的QtCreator,可是时至今日,到了Qt6时代,QtCreator已经都12.0.1版本了,不仅没变的更好用,反而变得更难用了。一方面可能是我被JetBrains全家桶和各种AI代码提示插件给惯坏了,另一方面也可能是开源版本的QtCreator没有被重视。好在CLion支持Qt开发,相关功能越来越完善,使用起来也越来越方便,同时借助CLion的语法提示和各种插件能大大提高开发效率。网上关于CLion搭建Qt开发环境的教程很多,但不少已经很旧了,而且还有一些坑,本教程采用目前最新版的CLion和Qt6演示最新的搭建流程,希望给大家提供参考。
版本说明
- CLion版本:2023.3.3
- CMake版本:3.27.8(CLion内置绑定版本)
- Qt6版本:6.6.1(MSCV2019 64-bit)、6.6.1(MinGW 11.2.0 64-bit)
- VS版本:2022
- MinGW版本:11.2.0 64-bit
CLion为当前最新版本,Qt为当前最新LTS版本,VS为2020 Pro版本。Qt安装时在Qt6.6.1下方勾选MSCV2019 64-bit和MinGW 11.2.0 64-bit两个Qt SDK组件,在Developer and Designer Tools下方勾选安装Qt自带的MinGW 11.2.0 64-bit编译器。对于不想安装VS的同学,可以下载安装Microsoft C++ 生成工具,只包含MSVC,不包含VS软件。
VS版本流程
在Windows上,推荐使用MSVC构建Qt程序,虽然MinGW也可以,但笔者的开发经历告诉我MSVC更合适一些。
基本配置
1. 创建Qt项目
新建项目,选择Qt微件可执行文件,Qt版本选择6,C++版本选择17。

选择Qt CMake前缀路径为Qt对应SDk目录,不用选到bin目录,只要选择上级目录即可,这里选择的是MSVC版本的。

2. 设置CLion工具链
在设置->构建、执行、部署->工具链选项中创建Visual Studio工具链。

工具集路径设置为VS安装文件夹位置,2020 Pro版本为2020/Professional,其他版本可自行尝试,只要CLion检索到工具链版本信息就说明添加正确了。可以使用提升键将Visual Studio工具链提到第一位,成为CLion的默认工具链。

如果已经将Visual Studio工具链设置成默认工具链,那么Cmake默认工具链就是默认的Visual Studio工具链,如果默认是其他工具链,请换成Visual Studio工具链。构建类型可以在这里指定或者直接在Cmake文件中配置。生成器选择默认或者其他,个人推荐使用Ninja。

3. 运行程序
此时直接运行,程序已经可以跑起来了。示例代码为显示一个按钮:

4. 进行开发
创建UI文件,进行开发,类名设置为MainWindow,CLion为自动添加关联的cpp和hpp文件,并自动追加到CMake文件中。



双击UI文件打开QtDesigner进行UI编辑,添加按钮控件,保存关闭。

如果CLion提示找不到UI文件生成的头文件,执行一下构建即可。


手动创建qrc和rc文件,制作程序exe图标,和程序运行图标。qrc文件其实就是XML文件,节点qresource是一组资源,prefix是所有的资源前缀,file是其下的文件路径。


在CMake文件中添加这两资源文件。

进行简单的代码编写,主要是设置窗口图标,以及给按钮添加槽函数。

删除示例中的显示按钮,改为显示我们创建的MainWindow。

编译运行即可发现exe图标和程序运行图标已经正常显示。



但是点击按钮,可以发现CLion控制台没有显示qDebug()的输出消息,这里需要设置一下,打开运行->编辑配置,添加环境参数QT_ASSUME_STDERR_HAS_CONSOLE=1保存后重新运行即可发现功能已经正常。点击按钮,控制台输出PUSHED。


至此整个项目已经可以正常开发了,但是整个文件夹的文件和资源文件都混在一起,没有做好分类,我们需要重构一下文件目录。

重构目录
创建src目录,将cpp文件都放到src中(main.cpp一般不放);创建include目录,将所有头文件放入include中;创建form目录,将所有ui文件放入form中;创建resource目录,将所有资源文件放入resource中。

直接拖拽,CLion会直接帮你重构,CMake文件会直接改动。

编译运行,发现直接报错,提示AUTOUIC错误。

这是因为默认的AUTOUIC查找目录是mainwindow.cpp所在的目录,然后发现找不到所以报错,我们修改一下AUTOUIC查找路径为form文件夹所在目录。

运行即可解决问题。但是很多时候当项目较大时,文件很多,我们不可能一个一个手动添加。所以我们需要手动修改一下,按照正常的模板编写。

编译运行发现报错,提示链接错误。

如果在网上查询会告诉你如果在hpp文件中类的定义含有Q_OBJECT字段,Qt会创建相应的moc_xxx.cpp文件用于实现信号与通信机制,报错是由于没有正常生成对应的moc_xxx.cpp。我们打开CMake的编译输出文件夹可以发现,mocs_compilation.cpp的确啥也没有。

实际上mainwindow.hpp中的类是有Q_OBJECT,正常应该生成moc_mainwindow.cpp文件的,也就是说CMake在AUTOMOC中并没有检索到我们的hpp文件。但是不同于AUTOUIC可以指定搜索路径,CMake中AUTOMOC没有这个属性可以设置,那怎么解决?这里我们对比一开始没有重构目录时可以运行的情况,可以发现,如果hpp直接写在add_executable中就可以运行,但是使用include_directories就不行,也就是说include_directories和AUTOMOC并不关联。既然如此我们手动添加所有hpp文件。

编译运行,果然一切正常。打开CMake编译产生的文件夹,发现对应的moc_mainwindow.cpp也正常生成。

MinGW版本流程
MinGW版本的流程和VS版本基本一致,唯一不同的在3个地方,一是创建项目选择的Qt CMake前缀,二是CLion工具链配置,三是CLion CMake配置。
- 创建项目选择的Qt CMake前缀

- CLion工具链配置

- CLion CMake配置

其他所有流程和配置参考VS版本即可。
CLion搭建Qt开发环境,并解决目录重构问题(最新版)的更多相关文章
- windows下VisualStudio和QtCreator搭建Qt开发环境
一.简介 集成开发平台IDE都有各自的长处,编写Qt程序可根据自己的喜好来选择相应的IDE.下述文章都是装载博友的文章,其中有很多细节还得自己调整. 二.详解 1.VisualStudio搭建Qt开发 ...
- 第一章 搭建Qt开发环境
第一章 搭建Qt开发环境 1.到http://download.qt-project.org/archive/上下载Qt的源码包.我下载的是qt-everywhere-opensource-src-4 ...
- Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程
Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程 一.准备工具: QT-SDK for Windows:http://get.qt.nokia.com/qtsdk/qt-sd ...
- 如何在 VS Code 中搭建 Qt 开发环境
前言 VS Code 高大上的界面.强大的智能联想和庞大的插件市场,着实让人对他爱不释手.虽然可以更改 Qt Creator 的主题,但是 Qt Creator 的代码体验实在差劲.下面就来看看如何在 ...
- Ubuntu 12.04下搭建Qt开发环境
http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...
- Fedora15下搭建QT开发环境及编译QT
看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考<yum安装qt> 不过初步接触fedora,为了了解一下如何在linux上编译.安装开源代码,所以必须 ...
- Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )
看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考<yum安装qt> 不过初步接触fedora,为了了解一下如何在linux上编译.安装开源代码,所以必须 ...
- window下搭建qt开发环境编译、引用ace
工作中经常用到ace.tao等,在windwo下的c++开发工具基本上就是vs20xx这些工具,还有些就是类似编辑工具例如:source insight等,前者比较大,打开.编译运行比较慢,二期针对a ...
- 【Tools】VS搭建Qt开发环境
00. 目录 @ 目录 00. 目录 01. 概述 02. Visual Studio 2019安装 03. Qt6安装 04. qt-vsaddin插件下载 05. qt-vsaddin插件安装 0 ...
- 利用XAMPP搭建PHP开发环境,解决443端口被占用
为了方便,作为学习使用的PHP环境,我们可以直接使用Apache+mysql+php集成开发环境.这样的集成软件有appserv和xampp,这里我们以xampp为例. 首先下载xampp软件,下载地 ...
随机推荐
- Java 项目工程搭建 --创建子模块(Spring Initializr)
一下篇,常用 Java 项目工程搭建 --创建子模块(依赖父工程) 也不算常用,常用的是 ctrl+c.ctrl+v ,哈哈 Package要手动改下,生成的很丑 选能支持 Alibaba Cl ...
- Chrome 英文翻译插件,沙拉查词
下载: https://pan.baidu.com/s/1VRaZzKgyPKc0Qt6Gufk3yw 提取码: chbm 下载: https://pan.baidu.com/s/1VRaZzKgyP ...
- C99标准前后对于二维数组的动态声明问题
html: toc: true 写在前面: 出于作者不了解C99以前标准中对二维数组的动态声明而导致的一场考场事故,作者写下这篇文章,,以便其他同学在遇到类似问题时不要犯同样的错误,同时作为对自己的警 ...
- 【python爬虫】bs4遍历、搜索文档树 bs4使用css选择器 selenium基本使用 selenium查找标签 selenium执行js代码
目录 上节回顾 今日内容 0 bs4遍历文档树 1 bs4搜索文档树 1.1 find方法的其他参数 2 css选择器 3 selenium基本使用 4 无界面浏览器 4.1 模拟登录百度 5 sel ...
- Spring Boot 整合 Camunda 实现工作流
工作流是我们开发企业应用几乎必备的一项功能,工作流引擎发展至今已经有非常多的产品.最近正好在接触Camunda,所以来做个简单的入门整合介绍.如果您也刚好在调研或者刚开始计划接入,希望本文对您有所帮助 ...
- #2059:龟兔赛跑(动态规划dp)
Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击--赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成了绝技,能 ...
- Dubbo 泛化调用在vivo统一配置系统的应用
作者:vivo 互联网服务器团队- Wang Fei.LinYupan Dubbo泛化调用特性可以在不依赖服务接口API包的场景中发起远程调用, 这种特性特别适合框架集成和网关类应用开发. 本文结合在 ...
- vivo 大规模特征存储实践
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/u1LrIBtY6wNVE9lzvKXWjA作者:黄伟锋 本文旨在介绍 vivo 内部的特征存储 ...
- 技术文档 | 将OpenSCA接入GitHub Action,从软件供应链入口控制风险面
继Jenkins和Gitlab CI之后,GitHub Action的集成也安排上啦~ 若您解锁了其他OpenSCA的用法,也欢迎向项目组来稿,将经验分享给社区的小伙伴们~ 参数说明 参数 是否必须 ...
- Python毕业设计推荐
今天给大家推荐几个基于python/django的毕业设计/课程设计. 1. 网上商城系统 这是一个基于python+vue开发的商城网站,平台采用B/S结构,后端采用主流的Python语言进行开发, ...