CLion配置QT的开发环境
Qt 开发时 QtCreator 是不得不接触的 IDE,提供了代码编写与可视化设计 GUI 的环境,但有时候使用却有点稍显逊色 。CLion 是 JetBrains 出品的 C++ IDE ,使用 CLion 来编写 C++ 会大大提高效率,因此 CLion 写代码,Qt Designer设计界面的方式是个不错的选择。😛
我的的配置环境
Windows 10
Qt 5.14..0
Mingw 64 bit
CLion 2020.1
安装 CLion 与 Qt
首先安装好CLion ,可参考前面的这篇文章: CLion的安装、激活、汉化及编译器配置
并安装Qt ,可参见 Visual Studio 2019配置qt开发环境 一文中 Qt安装 小节 安装好 Qt 。安装时可根据自身需求选择 mingw 或者 MSVC 编译器。
Basically, MinGW is a port of Linux (GNU, actually) tools for Windows, which happen to include a port of GCC (the actual compiler). MSVC, on the other hand, is a Windows native tool chain and runtime for building C/C++ executables. – Quora
MinGW 是 Minimalist GNU on Windows 的缩写。它是一个可自由使用和自由发布的 Windows 特定头文件和使用 GNU 工具集导入库的集合,允许你在 GNU/Linux 和 Windows 平台生成本地的 Windows 程序而不需要第三方 C 运行时库。
msvc 版允许和微软的 Visual Studio 进行集成迅速开发复杂的企业级应用。
如果考虑到扩展和跨平台,应该优先考虑 MinGW。
配置环境变量
右键“我的电脑”-》“高级系统设置”-》“环境变量”-》“系统变量”-》Path,添加如下四个新的系统变量:
D:\20200213\ForDevelopment\Qt\Qt5.14.1\Tools\mingw730_64\bin
D:\20200213\ForDevelopment\Qt\Qt5.14.1\Tools\mingw730_64\lib
D:\20200213\ForDevelopment\Qt\Qt5.14.1\5.14.1\mingw73_64\bin
D:\20200213\ForDevelopment\Qt\Qt5.14.1\5.14.1\mingw73_64\lib
根据自己的安装路径配置如上四个系统变量。
CLion 中的配置
CLion 中工具链配置
启动Clion后,左上角是点击“File”-》“settings”-》“Build,Excution,Deployment”-》“Toolchains”,然后将Environment改为“MinGW”,然后,选择Qt安装路径下的MinGw路径。具体如下图:
若你的没有检测出,请根据上图的手动配置相应的 gcc 、g++ 等编译器的路径。注意我的是 64位 MinGW下的路径。
另外,若看到出现对话框中有一个黄色感叹号 ,关于 cmake 错误,请参https://zhuanlan.zhihu.com/p/43680621。
CLion中CMake设置
注意:工具链要选择上一步中配置好的。
CMake Options 是用来指定Qt的安装位置,默认会检测到,若没有的话需要手动设置。
1 | CMake Options: |
配置Qt Designer和UIC 用于打开 Qt 设计师
Qt Designer 配置
在CLion中,进入菜单File->Settings->Tools->External Tools,点击 + 新建工具。
名称写为 Qt Designer ,描述随便写,desginer.exe 的路径根据自己的安装情况更改。在参数与工作目录中分别写入$FileName$ 和 $FileDir$,见下图配置。
1 | Name: Qt Designer |
UIC配置
与 Qt Designer 配置相似 ,名称、描述、程序路径、参数与工作目录。其中参数与工作目录分别写入 $FileName$ -o ui_$FileNameWithoutExtension$.h 和 $FileDir$ 。
1 | Name: UIC |
这样以后就可以打开外部的 Qt 设计师编辑我们软件的界面啦。
具体打开方式为: 右键点击ui文件或者qrc文件,然后点击External Tools -> QtDesigner,如能将选中的文件通过Qt Creator打开,则为成功。
建立项目进行测试
建立项目
配置好后我们可以打开 CLion 试试了。
创建一个新项目:
然后 Run 一下 ,熟悉的 HelloWorld ,你好世界!
说明 C++ 的是能够运行起来啦,接下来我们加入属于 Qt 的东西 。
在工程上右键-》“new”-》“C++ class”,新建 ``mainwindow.cpp`,如下:
接着继续在工程上右键-》“new”-》“file”,新建mainwindow.ui文件
在 main.cpp 中写入以下内容
1 |
|
mainwindow.cpp
1 | /** |
mainwindow.h
1 |
|
mainwindow.ui 可以右键-外部工具-选择UI designer 打开 ,随便加点控件
具体打开方式为: 右键点击ui文件或者qrc文件,然后点击External Tools -> QtDesigner,如能将选中的文件通过Qt Creator打开,则为成功。
mainwindow.ui 中的内容为
1 |
|
编写CMakeLists.txt
CLion是根据CMakeLists.txt文件来组织和设置项目的,所以如果我们需要添加诸如Qt这样的第三方库或是改变编译行为,都只要修改CMakeLists.txt即可。
在完成上面的工作后,我们需要编写 CMakeLists.txt ,注意将 CLionQtTest 改成自己的项目名称。。
1 | cmake_minimum_required(VERSION 3.16) |
注意将 CLionQtTest 改成自己的项目名称。
#表示该项目至少要求cmake的版本为3.16
cmake_minimum_required(VERSION 3.16)
#指定c++标准的版本
set(CMAKE_CXX_STANDARD 11)
#自动调用moc,uic,rcc处理qt的扩展部分
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)#项目名称
project(CLionQtTest)
#找到对应的qt模块,名字为qmake中QT +=
中的name首字母大写后加上Qt5前缀 例如core为QtCore,也可以去${CMAKE_PREFIX_PATH}的目录中找到正确的模块名
find_package(Qt5Widgets)
find_package( Qt5Core)
find_package( Qt5Gui)#向项目中添加需要的文件,当然你也可以对ui文件、cpp文件、h文件、qrc文件单独使用SET指令管理,然后添加到add_executable指令中
add_executable(CLionQtTest
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui)
# 或者 将当前目录的所有源文件添加进变量
aux_source_directory(. DIRS_SRCS)#将项目中需要添加的Qt Modules中的库文件与项目进行链接(添加的模块即Qt”*.pro”文件中的Qt+=Module)
target_link_libraries(CLionQtTest Qt5::Widgets)
运行
然后运行即可,报错的话可以看下面的一些常见错误。
报错
Process finished with exit code -1073741511 (0xC0000139)
方案一:
在Clion中,进入菜单->Run->Edit Configurations,选择自己的Application,填写Working directory为Qt的bin目录,如我的安装目录是:D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin
然后保存退出即可。
方案二:把Dll拷贝到exe目录
然后重新运行就正常啦
配置工具链 MinGW 路径时报错:
For MinGW make to work correctly sh.exe must NOT be in your path.
解决方法:cmake设置参数 -DCMAKE_SH=”CMAKE_SH-NOTFOUND”
1 | -DCMAKE_SH="CMAKE_SH-NOTFOUND" |
Clion-如何切换Debug与Release版本
在设置中找到 Build,Execution,Deployment 中的 CMake 。点击左侧的框,“+”,添加新的模式,系统一般会自动给你产生release版本。
然后进行切换,运行即可。
参考文献
CMake manuel in Qt’s documentation.
What is the difference between MinGW and MSVC compilers?
要把所有的夜归还给星河,把所有的春光归还给疏疏篱落,把所有的慵慵沉迷与不前,归还给过去的我。明日之我,胸中有丘壑,立马振山河。
——《德卡先生的信箱》