赞
踩
Clion使用cmake运行QtCreator创建的qmake项目,这也正是我希望的。既可用QtCreator运行qt的qmake项目进行debug、发布等,同时也可以享受clion编码、debug的便捷高效(对于jetbrains idea用户来说)。因为用qtcreaotr编写代码实在是不流畅、难用、编码提示慢而少。
建议用Clion2021.1.*以上的版本(便捷使用qt项目,详细原因不解释)
总体实现目标,两全其美:


默认即可

继续

完成创建,如下:

接下来,打开clion,前提是已经配置好qt中的mingw、cmake(很简单),参考我的clion配置文章this
附上配图吧
toolchains

cmake

其实在clion中添加好qt的mingw,其他都会自动识别出来
会提示

点ok

其实会自动创建CMakeList.txt
在main.cpp同级目录下(最好是同级)自己手动添加cmake工程构建文件,文件名称:CMakeList.txt

内容参考两种,两种都可以运行,只要配置正确

具体代码
cmake_minimum_required(VERSION 3.19) project(window003) set(CMAKE_CXX_STANDARD 14) set(CMAKE_PREFIX_PATH "E:/develop/Qt/Qt5.14.2/5.14.2/mingw73_64") set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set(QT_VERSION 5) set(REQUIRED_LIBS Core Gui Widgets) set(REQUIRED_LIBS_QUALIFIED Qt5::Core Qt5::Gui Qt5::Widgets) add_executable(${PROJECT_NAME} main.cpp mainwindow.cpp mainwindow.h mainwindow.ui ) if (NOT CMAKE_PREFIX_PATH) message(WARNING "CMAKE_PREFIX_PATH is not defined, you may need to set it " "(-DCMAKE_PREFIX_PATH=\"path/to/Qt/lib/cmake\" or -DCMAKE_PREFIX_PATH=/usr/include/{host}/qt{version}/ on Ubuntu)") endif () find_package(Qt${QT_VERSION} COMPONENTS ${REQUIRED_LIBS} REQUIRED) target_link_libraries(${PROJECT_NAME} ${REQUIRED_LIBS_QUALIFIED}) 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 ${REQUIRED_LIBS}) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${QT_INSTALL_PATH}/bin/Qt${QT_VERSION}${QT_LIB}${DEBUG_SUFFIX}.dll" "$<TARGET_FILE_DIR:${PROJECT_NAME}>") endforeach (QT_LIB) endif ()

具体代码:
cmake_minimum_required(VERSION 3.5) project(window003 LANGUAGES CXX) set(CMAKE_PREFIX_PATH "E:/develop/Qt/Qt5.14.2/5.14.2/mingw73_64") set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # QtCreator supports the following variables for Android, which are identical to qmake Android variables. # Check http://doc.qt.io/qt-5/deployment-android.html for more information. # They need to be set before the find_package(Qt5 ...) call. #if(ANDROID) # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") # if (ANDROID_ABI STREQUAL "armeabi-v7a") # set(ANDROID_EXTRA_LIBS # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so) # endif() #endif() find_package(Qt5 COMPONENTS Widgets REQUIRED) if(ANDROID) add_library(window003 SHARED main.cpp mainwindow.cpp mainwindow.h mainwindow.ui ) else() add_executable(window003 main.cpp mainwindow.cpp mainwindow.h mainwindow.ui ) endif() target_link_libraries(window003 PRIVATE Qt5::Widgets)


当每次修改CMakeList.txt,clion编辑器右上角会提示自动重新加载项目配置,
选 ‘Enable Auto Reload’ 即可。

此时无论在clion上还是qtcreator是运行,都可以


此我们需要再把CLion与QT Designer链接,设置ExternalTool,点击File->Setting->Tools->External Tools,增加一项配置。


至此,OK~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。