Clion配置Qt+MSVC/MinGW环境 (正在持续更新)
Clion配置Qt+MSVC/MinGW环境
1. QT中的编译器
QT 中存在着两种编译方式,一种是MSVC,另一种是MinGW。在windows下使用clion写C++可以使用g++(windows下叫MinGW),也可以使用msvc(微软的编译器,必须下载Visual studio)
- MSVC (Mirosoft Visual C++ Compiler)是指微软的VC编译器
- MinGW是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库
安装QT时,一般情况下会选择其中一种。不能同时安装msvc和mingw的QT库。
2. 两种编译器的优势劣势
基于Windows环境的MinGW在进行deug时部分指针等变量并不兼容。
3. Clion + Qt - MSVC 配置
3.1 Clion 、 Qt-MSVC 下载安装
Clion-2021.3.2(各个版本均可不限制) Qt-5.x(最好是5.14之前-5.0之后,编译器MSVC2017_64)MSVC(VS2017)-VC15(安装VS2017,其他版本可能不支持)
安装过程自行百度 教程较多
3.2 Clion项目创建
各软件安装结束后,打开Clion,新建工程,注意两点:
- QT widgets exe 选择Qt widget项目
- Qt Cmake prefix path 选择自己的Qt安装目录下的msvc路径
最终create创建
项目自动生成 main.cpp 、 cmakelists.txt
cmake_minimum_required(VERSION 3.21)
project(MSVC_Qt)
#set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -Wall -fexec-charset=GBK”)
set(CMAKE_CXX_STANDARD 14)
############## QT 设定开始 ###############
#打开Qt的MOC、UIC、RCC等功能
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
# 设置Qt5的cmake模块所在目录,如果不设置将使用系统提供的版本
set(CMAKE_PREFIX_PATH "E:/progLanguage/Qt/Qt5.9.0/5.9/msvc2017_64")
# 从上面的目录找到对应的qt模块,名字为qmake中QT += <name>中的name首字母大写后加上Qt5前缀
#find_package(Qt5Widgets REQUIRED NO_DEFAULT_PATH)
find_package(Qt5 COMPONENTS
Core
Gui
Widgets
REQUIRED)
############## QT 设定结束 ###############
############### 最终输出 设定 ##############
add_executable(MSVC_Qt main.cpp)
target_link_libraries(MSVC_Qt
Qt5::Core
Qt5::Gui
Qt5::Widgets
)
# 设定exe输出目标路径
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
# 设定库dll的输出路径
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib)
################ Qt 其他相关设定-拷贝相关dll/a到执行文件目录下 大意为未配置或尝试找不到 Qt 安装目录,则警告 ###############
if (WIN32)
set(DEBUG_SUFFIX)
if (CMAKE_BUILD_TYPE MATCHES "Debug")
set(DEBUG_SUFFIX "d")
endif ()
set(QT_INSTALL_PATH "${CMAKE_PREFIX_PATH}")
if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
endif ()
endif ()
if (EXISTS "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
endif ()
foreach (QT_LIB Core Gui Widgets)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/bin/Qt5${QT_LIB}${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>")
endforeach (QT_LIB)
endif ()
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QPushButton button("Hello world!", nullptr);
button.resize(200, 100);
button.show();
return QApplication::exec();
}
3.2 项目设置
File->Setting->Build->toolcains
- 点击+号
- 选择VS项目
- ToolSet设定vs2017安装目录
- Arch选择amd64
- 如果有其他编译器,最终记得上箭头调整VS至最高并显示默认
3.3 构建运行
输出显示正常
4. Clion + Qt - MinGW 配置(接下来会更新)
MinGW 虽然可以使用,但是在结合于QT-Opencv、QT-GDAL等第三方库时会极为繁琐-劝退 。