Qt + Clion + cmake 环境配置

本文不涉及QML,因为我没用过

用C++写窗体,同时还有可视化UI界面,这不比控制台程序香吗?QAQ我大一写c++大作业的时候要是知道这个东西,我绝对满分啊!!!!

To:
新版的Clion 增加了对Qt的支持,的确是可以直接在Clion构建Qt项目,不过我的建议是先在Qt Creator里先新建项目(在这里构建的项目与在Clion里构建的项目,其CMakeLists.txt 有很大的不同,由Qt构建的CMake是最主要的部分,Clion的可以参考),可以运行了再尝试搬到clion去配置环境

ps:就算是使用Clion,设计ui的时候还是得回到 Qt Creator里的

Qt安装内容

Qt的安装过程百度上到处都是这里就不写了,主要想分享的是我对于Qt安装器里下载的内容的了解:

在这里插入图片描述
咳咳 字有点小 将就一下 (>人<;)
在这里插入图片描述
我的Qt安装目录

Qt
	5.15.2 # 版本包
		mingw81_64 
		msvc2015_64
		msvc2019_64
			bin
				assistant.exe # 查Qt API的
				designer.exe # ui设计器
				windeployqt.exe # 打包工具 
				libstdc++-6.dll # 超级重要的链接库  项目里缺了它就重定位不了 无法使用动态库
				opengl32sw.dll # opengl库
				...
		Src
	dist 
	Docs 
	Examples # 样例 这个可以多看看 超有用
	installerResources
	Licenses
	Tools # 工具包
		CMake_64 # CMake软件
		mingw810_64 # mingw 64位编译器
		Ninja # 忘了是啥了 反正挺重要的
		QtCreator # IDE 
		QtDesignStudio # 图标设计器 
		sdktool
	verdist
	components.xml
	InstallationLog.txt
	MaintenanceTool.exe # 安装器
	MaintenanceTool.dat
	MaintenanceTool.ini 
	network.xml

环境配置

Clion的配置主要还是靠Settings里的 Toolschains(工具) 和 CMake(具体运用到工程里的配置)
不需要添加到path(环境变量)里
Qt x.xx.x/msvc/bin 得添加到 path里,不然程序找不到Qt的动态库

MinGW

配置
Qt 5.15.2 + clion 2022.3.2 + mingw81_64(Qt里安装的那个)
在这里插入图片描述
在这里插入图片描述
虽然官网说CMAKE_PREFIX_PATH可以写在CMakeLists.txt,但我不建议你写在CmakeLists.txt里,毕竟和别人合作写项目时,别人可不一定有这个路径,而写在Settings里就没有这个问题

-G Ninja -DCMAKE_PREFIX_PATH=你的Qt下的mingw的路径

在这里插入图片描述

MSVC

配置
Qt 5.15.2 + clion 2022.3.2 + MSVC 2019
MSVC需要安装Visual Studio ,Qt只提供cmake及相关qt程序文件,在Visual Studio installer 里安装 MSVC xxxx c++生成工具+Windows SDK x

在这里插入图片描述
在这里插入图片描述

虽然官网说CMAKE_PREFIX_PATH可以写在CMakeLists.txt,但我不建议你写在CmakeLists.txt里,毕竟和别人合作写项目时,别人可不一定有这个路径,而写在Settings里就没有这个问题

-G Ninja -DCMAKE_PREFIX_PATH=你的路径

Debug调试

Clion无法查看QString等Qt特有的类的信息,需要额外的辅助

拷贝这个文件:qt5.natvis

放到项目的跟目录下,不需要其他设置,在你调试的时候Clion会自动寻找根目录下的这个文件

编译问题

…\Qt\5.15.2\msvc2015_64\lib\Qt5Widgetsd.lib : warning LNK4272:库计算机类型“x64”与目标计算机类型“x86”冲突
main.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ),函数 _main 中引用了该符号
main.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QString::QString(char const *)" (__imp_??0QString@@QAE@PBD@Z),函数 _main 中引用了该符号
main.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QApplication::QApplication(int &,char * *,int)" (__imp_??0QApplication@@QAE@AAHPAPADH@Z),函数 _main 中引用了该符号
main.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ),函数 _main 中引用了该符号
main.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAHXZ),函数 _main 中引用了该符号
main.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall QWidget::show(void)" (__imp_?show@QWidget@@QAEXXZ),函数 _main 中引用了该符号
main.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall QWidget::resize(int,int)" (__imp_?resize@QWidget@@QAEXHH@Z),函数 _main 中引用了该符号
main.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QPushButton::QPushButton(class QString const &,class QWidget *)" (__imp_??0QPushButton@@QAE@ABVQString@@PAVQWidget@@@Z),函数 _main 中引用了该符号
main.cpp.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall QPushButton::~QPushButton(void)" (__imp_??1QPushButton@@UAE@XZ),函数 _main 中引用了该符号
D:\Tools\IDE\Qt\5.15.2\msvc2015_64\lib\Qt5Widgetsd.lib : warning LNK4272:库计算机类型“x64”与目标计算机类型“x86”冲突
D:\Tools\IDE\Qt\5.15.2\msvc2015_64\lib\Qt5Guid.lib : warning LNK4272:库计算机类型“x64”与目标计算机类型“x86”冲突
D:\Tools\IDE\Qt\5.15.2\msvc2015_64\lib\Qt5Cored.lib : warning LNK4272:库计算机类型“x64”与目标计算机类型“x86”冲突

注意了这不是通常可以忽略的警告,而是非常严重的报错,会导致找不到Qt5Widgetsd.lib链接库的

分析:Clion里的MSVC配置那里Architecture 属性和qt下载下来的msvc的不符,找个可以运行的qt项目,照抄qt creator的配置就行

解决方法: Settings-> Build, Execution, Deployment-> Toolchains里找到 MSVC 工具修改Architectureamd64

你可以打开Qt creator看一下对不对

error LNK2019: 无法解析的外部符号 _RTC_CheckStackVars,函数 main 中引用了该符号
main.cpp.obj : error LNK2019: 无法解析的外部符号 _RTC_CheckStackVars,函数 main 中引用了该符号
main.cpp.obj : error LNK2001: 无法解析的外部符号 _RTC_InitBase
main.cpp.obj : error LNK2001: 无法解析的外部符号 _RTC_Shutdown
main.cpp.obj : error LNK2001: 无法解析的外部符号 __CxxFrameHandler4
LINK : error LNK2001: 无法解析的外部符号 mainCRTStartup
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\kernel32.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\user32.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\gdi32.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\winspool.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\shell32.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\ole32.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\oleaut32.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\uuid.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\comdlg32.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Windows Kits\10\\lib\10.0.22000.0\\um\x86\advapi32.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\lib\x86\MSVCRTD.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突
D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\lib\x86\msvcprtd.lib : warning LNK4272:库计算机类型“x86”与目标计算机类型“x64”冲突

分析:使用了clion自动从vs里检测到的cmake,改成qt自己的就行

解决方法: Settings-> Build, Execution, Deployment-> Toolchains里找到 MSVC 工具修改cmake...\Qt\Tools\CMake_64\bin\cmake.exe

Error running ‘Build’: Cannot start process, the working directory ‘…\cmake-build-debug-msvc’ does not exist

分析:使用了Ninja,虽然不知道为啥不能自动生成Debug输出文件

解决方法:File-> Roload CMake Project

特殊技巧

添加动态库

先看这个:关于为什么我们不需要为Qt的库设置路径就可以使用动态库 - find_package与CMake如何查找链接库详解

咳咳,对于外部库用的还不多,我目前的做法是:

1. link_directories( 链接库的文件夹目录 )
# add_executable 在它俩中间 位置不可变
2. target_link_libraries( 链接库名 )
3. 把链接库拷贝到 cmake-build-debug(那个橙色文件夹) 的 根目录 下 

主要注意的是:

如果使用的是MSVC,在Debug模式下,MSVC使用的库的后缀名都是-d.dll,比如说使用Qt5Core,需要链接的是 Qt5Cored.dll而不是 Qt5Core.dll

打开ui文件

Clion 打开Qt的ui文件
一个很久之前学到的小技巧,我忘了当时参照的是哪篇博客了,过程跟上面这个很像,不过现在没测试过是否成功

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CLion 是一款由 JetBrains 公司开发的跨平台的集成开发环境(IDE),广泛应用于 C 和 C++ 的开发。在 CLion配置 Qt 环境可以帮助我们更方便地进行 Qt 的应用程序开发。 首先,需要确保已经安装了 Qt。可以从官方网站下载 Qt 安装程序,并按照指示进行安装。安装完成后,记住 Qt 的安装路径。 打开 CLion,点击菜单栏的 "File",然后选择 "Settings"。 在弹出的 "Settings" 窗口中,点击左侧面板的 "Build, Execution, Deployment",然后选择 "CMake"。 在右侧的 "CMake options" 输入框中,输入以下内容: -DCMAKE_PREFIX_PATH=<Qt 安装路径>/5.x.x/<编译器>/lib/cmake/Qt5 其中,"<Qt 安装路径>" 为你自己的 Qt 安装路径,"5.x.x" 是 Qt 的版本号,"<编译器>" 是你当前使用的编译器名称。 然后,点击 "Apply" 或 "OK" 保存修改。 接下来,对项目进行配置。 点击菜单栏的 "File",然后选择 "New Project"。 在弹出的对话框中,选择 "C++ Executable"。 然后,按照向导的指示填写项目名称和保存路径,并点击 "Create" 创建项目。 在项目文件夹中,创建一个名为 "CMakeLists.txt" 的文件,打开并编辑它。 在 "CMakeLists.txt" 文件中,添加以下内容: ``` cmake_minimum_required(VERSION 3.0) project(MyQtProject) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) find_package(Qt5 REQUIRED COMPONENTS Core Widgets) add_executable(MyQtProject main.cpp) target_link_libraries(MyQtProject PRIVATE Qt5::Core Qt5::Widgets) ``` 保存并关闭文件。 然后,重新加载 CMake 项目。 点击 CLion 工具栏中的 "Reload CMake Project" 图标。 至此,CLionQt 环境配置完成。 从现在开始,我们就可以在 CLion 中编写和构建 Qt 的应用程序了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值