stackoverflow上寻求帮助时,我看到了这样的一句话:

Try to add Qt library's installation directory (select specific Qt version and build system \bin sub-subdirectory) to PATH environment variable .

I have been struggling with similar problem. I have had installed Qt library (version 5.6 and 5.7) in C:\Qt\ directory. In my project I use version 5.6. Build system is MinGW.

After I have added C:\Qt\5.6\mingw49_32\bin, everything works fine.

The reason for this behaviour is quite simple. During the build, build system 'knows' where to search for libraries, but when app is being executed, Windows system searches for required libraries in application's directory and directories specified by PATH variable.

If it fails, application exits with -1073741515 (0xC0000135) error.

他的大概意思是这样的:

你最好将带有指定版本的Qt库目录添加到系统path环境变量中,这样做的原因很简单, 在编译和构建时,编译器知道在哪里搜索库文件,而程序运行时,Windows系统会在程序目录以及path环境变量中搜索所需的库文件。如果未找到,程序就会以 -1073741515 (0xC0000135)错误退出。

在未阅读到这段话之前,我一直被Clion+Qt5的环境配置问题所缠绕, 我找遍了整整俩晚上的百度, 无论我怎样修改Clion配置和CmakeLists文件,程序始终不能运行,不是报错找不到Qt文件,就是程序以 -1073741515 (0xC0000135)异常退出。历经种种抓狂,终于,我在Google上翻到了这句话,将Clion+Qt5成功配置起来,让我可以开始我的Qt学习之旅(这里忍不住想说一句,Google的搜索效率确实是远大于某度的,至少不会有那么多重复与丧心病狂的公众号验证码获取)

不得不说,这段话对于我的帮助很大, 既帮助我了解了环境变量path的作用, 也帮我解决了哭哭缠绕我两天的Qt环境安装问题。

以下是我总结的Clion+Qt5环境配置的几个关键步骤:

1.配置Toolchains

配置位置: Clion–>Settings–>Build,Execution,Deployment–>Toolchains

  • 点击+号新建,选择MinGw类型,
  • Name:自定义,
  • Environment:选择Qt安装位置下的Tools/mingw文件夹

如果环境位置选择正确,其余的选项会自动检测,最后点击Apply保存配置。

2.配置Cmake

配置位置: Clion–>Settings–>Build,Execution,Deployment–>Cmake

  • 点击+号新建,
  • Name: 自定义
  • Build type: 选择默认的Default(选择Debug会报错,目前还不知道原因)
  • Toolchain: 选择刚刚新建的Toolchain,
  • CMAKE options: -DCMAKE_PREFIX_PATH=D:/Qt/5.15.2/mingw81_64(请将路径改为具体Qt版本号下的mingw)

点击Apply,保存配置

image-20220322124759189

3.配置环境变量

将安装目录下的

  • tools/mingw/bin文件夹
  • 具体版本号下的/mingw/bin

添加到环境变量path中

image-20220322123429154

4.新建项目,配置CmakeLists.txt文件

新建项目时请选择Qt Widgets Executable, 并将Qt具体版本下的mingw输入到Qt Cmake prefix path,

常用的如下,请根据具体情况修改相关路径,已经项目名称,

或者选择Clion自动生成的也是可以的。

cmake_minimum_required(VERSION 3.0)
project(Test)

# 指定c++标准的版本
set(CMAKE_CXX_STANDARD 17)

# 自动调用moc,uic,rcc处理qt的扩展部分
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

# 设置Qt5的cmake模块所在目录,如果不设置将使用系统提供的版本
set(CMAKE_PREFIX_PATH D:/Qt/5.15.2/mingw81_64/)

# QT_DIR和QT_VERSION是指定了qt安装目录和版本的环境变量
# 如果你使用了系统的cmake,那么会优先使用系统提供模块,因为cmake会优先搜索CMAKE_SYSTEM_PREFIX_PATH
# 如果你不想让cmake优先搜索系统目录(会导致编译使用系统安装的qt而不是我们配置的),需要提示find_package命令

# 找到对应的qt模块,名字为qmake中QT += <name>中的name首字母大写后加上Qt5前缀
# 例如core为QtCore,你也可以去${CMAKE_PREFIX_PATH}的目录中找到正确的模块名
# 如果你想要使用系统自带的qt,这样写:
find_package(Qt5Widgets REQUIRED)

# 如果不想使用系统qt,这样写(注意NO_DEFAULT_PATH参数,它会让find_package跳过系统目录的查找):
# find_package(Qt5Widgets REQUIRED NO_DEFAULT_PATH)

# 将当前目录的所有源文件添加进变量
aux_source_directory(. DIRS_SRCS)

# 通常这样设置就可以,如果你的项目包含qrc文件,那么需要将它们单独添加进来
# 例如add_executable(test ${DIRS_SRCS} resources.qrc)
add_executable(Test ${DIRS_SRCS})

# 把对应Qt模块的库链接进程序
target_link_libraries(Test Qt5::Widgets)
Last modification:March 22, 2022
如果觉得我的文章对你有用,请随意赞赏