什么是CLion
CLion是JetBrain公司开发的一款C语言开发环境,JetBrain比较出名的有:开发Java的Idea,开发网页的WebStorm,开发Android的AndroidStudio,JetBrain系列是当之无愧的宇宙最优秀IDE
CLion在纯粹的WIndows开发上,可能功能没有Visual Studio那么完善强大,毕竟Visual Studio是微软自己的,有着强大的背景和大量的用户帮助其不断完善,但是在外观,易用性,细节方面,JetBrain系列都远远超过了Visual Studio
为什么选择CLion
Qt并不能算是WIndows开发,它只是可以用来开发Windows桌面软件,在生态和工具链方面,它更像是Linux程式开发,整个Qt框架使用的都是标准的C++语法和标准的GNU编译工具,移植性很好,很容易迁移到CLion上面,基本没什么负面问题遗留
CLion相比Qt Creator和Visual Studio有以下优势:
CLion的不足之处
由于CLion不像Idea,是JetBrain的主打产品,所以仅支持标准的C语言工具链,并没有为Qt这样的开发框架提供支持,所以也就不能对ui文件和qml文件进行排版,也不能以拖拽的方式添加控件
好在CLion提供了外部工具调用功能,它可以调用Qt Creator来打开界面布局文件,由于只是打开单个文件,不用编译项目,速度也非常快,听起来有点麻烦,但实际用起来还是很自然的
_下面我们开始讲解如何在CLion中搭建Qt开发环境,由于讲得毕竟细,篇幅会长点
其实大家看完就会觉得,其实非常简单,学一次就会
唯一难点是cmake脚本的编写,不过我都已经写好模版和注释了,大家直接抄就行了_
创建C++ Executable项目
配置MinGW编译环境
我们只需设置MinGW所在目录,如果目录正确,剩下可以自动检测到
将MinGW路径添加到系统环境变量
MinGW不但在编译时需要,有些库在运行时还是需要,将MinGW路径添加到系统环境变量中,这样程序就能自动找到这些库
注意,设置完系统环境变量后要重启CLion,CLion有个缺陷就是只会在启动时加载系统环境变量,不会在编译程序时自动刷新
如果手动执行exe文件没问题,点击运行按钮却报错,可能就是这个原因造成的
_注意到,Qt下面有两个MinGW文件夹,它们里面的内容是不一样的
qt/tools下面放的是MinGW的编译工具
qt/version下面放的是Qt通过MinGW编译Windows程序所需的额外依赖库_
编写Qt代码
这里我们高级一点,直接用Qml代码来进行测试
我们的项目只有三个文件,一个qml文件,一个qrc文件,一个cpp文件
//main.qml
import QtQuick 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
width: 800
height: 600
color: "transparent"
background: null
Rectangle {
id: root
anchors.fill: parent
border.color: "lightblue"
border.width: 2
color: "#22FFFF00"
}
}
//qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
</RCC>
//main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlComponent>
#include <QWindow>
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QQmlComponent component(new QQmlApplicationEngine(), "qrc:/main.qml");
QWindow *window = (QWindow*)component.create();
window->show();
return app.exec();
}
编写cmake脚本
CLion能运行Qt项目,关键就在于cmake,cmake将我们的源码同Qt每个模块的make连接起来,最终就完全了和Qt Creator一样的编译工作
//CMakeLists.txt
#设置cmake最低版本要求
cmake_minimum_required(VERSION 3.0)
#设置项目名
project(clion-qt)
#指定c++版本
set(CMAKE_CXX_STANDARD 17)
#包含当前目录
set(CMAKE_INCLUDE_CURRENT_DIR ON)
#调用moc,uic,rcc编译qt
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
#设置qt的cmake目录
#这个目录包含了所有qt模块编译所需的cmake文件
set(CMAKE_PREFIX_PATH D:/dev/qt/5.13.0/mingw73_64/lib)
#从上面的目录下寻找对应的qt模块
find_package(Qt5Core)
find_package(Qt5Quick)
#包含需要编译的文件
set(SOURCE_FILES main.cpp)
set(RESOURCE_FILES main.qml)
set(QRC_FILES qml.qrc)
add_executable(clion-qt WIN32 ${SOURCE_FILES} ${RESOURCE_FILES} ${QRC_FILES})
#包括指定的qt模块
#这个功能相当于qt creator中的QT += <module_name>
qt5_use_modules(clion-qt Core Quick)
#把指定的qt模块链接进程序
target_link_libraries(clion-qt Qt5::Core Qt5::Quick)
运行程序
编写完cmake脚本后,IDE会提示我们重新加载脚本,我们重载cmake后,点击绿色运行按钮,就可以运行程序了
调用外部工具编写Qml
如果对排版没什么要求,我们可以在CLion中以纯文本的方式编写Qml
确实喜欢自动排版和颜色高亮,还有属性提示的,可以调用Qt Creator来编写Qml
原网址: 访问
创建于: 2024-05-24 10:06:16
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论