Qt - Clion使用cmake运行QtCreator创建的qmake项目,无改动切换自如

Clion使用cmake运行QtCreator创建的qmake项目,这也正是我希望的。既可用QtCreator运行qt的qmake项目进行debug、发布等,同时也可以享受clion编码、debug的便捷高效(对于jetbrains idea用户来说)。因为用qtcreaotr编写代码实在是不流畅、难用、编码提示慢而少。

建议用Clion2021.1.*以上的版本(便捷使用qt项目,详细原因不解释)

总体实现目标,两全其美:

  • qt的qmake项目在qtcreator、clion上的运行调试(无改动切换)
  • 使用qtcreator负责创建、发布项目
  • 使用clion编码、debug

在qtcreator中创建qmake项目

1.创建

在这里插入图片描述

2.选择qmake

在这里插入图片描述
默认即可
在这里插入图片描述
继续
在这里插入图片描述

完成创建,如下:
在这里插入图片描述

Clion配置
建议用Clion2021.1.*以上的版本(便捷使用qt项目,详细原因不解释)

接下来,打开clion,前提是已经配置好qt中的mingw、cmake(很简单),参考我的clion配置文章this
附上配图吧
toolchains
在这里插入图片描述
cmake
在这里插入图片描述
其实在clion中添加好qt的mingw,其他都会自动识别出来

4.用clion打开刚刚qtcreator创建的项目工程

会提示
在这里插入图片描述
点ok
在这里插入图片描述

其实会自动创建CMakeList.txt

在main.cpp同级目录下(最好是同级)自己手动添加cmake工程构建文件,文件名称:CMakeList.txt
在这里插入图片描述

5.CMakeList.txt文件内容(两种)

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

第一种clion生成

在这里插入图片描述
具体代码

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 ()

第二种qtcreator生成(简单)

在这里插入图片描述
具体代码:

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)

6.重新加载为cmake项目

在这里插入图片描述

加载成cmake工程成功标志

在这里插入图片描述

7.CMakeList.txt修改后加载

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

8.运行

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

  • clion运行

在这里插入图片描述

  • qtcreator运行

在这里插入图片描述

9.为clion添加外部工具qtdesigner.exe

此我们需要再把CLion与QT Designer链接,设置ExternalTool,点击File->Setting->Tools->External Tools,增加一项配置。
在这里插入图片描述
在这里插入图片描述

至此,OK~

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值