【问题标题】:How to configure CLion IDE for Qt Framework?如何为 Qt 框架配置 CLion IDE?
【发布时间】:2015-07-25 22:36:40
【问题描述】:

如何为 Qt 框架配置 CLion IDE? 这个IDE兼容Qt,还是有其他IDE兼容Qt?

我只是想尝试使用 Qt Creator 以外的东西。

【问题讨论】:

  • 我认为这个问题不值得投反对票。虽然可以通过谷歌搜索找到答案,但需要大量点击。找到这个让我更快地得到答案。
  • @Claudio 问题不在于哪个 IDE 最好,而在于 CLion 如何与 Qt 一起工作。你的回复无助于回答这个话题,也无助于那些想用 Qt 开发而不必使用 Qt Creator 的人。
  • 请注意,Jetbrains 有(现在)官方页面:jetbrains.com/help/clion/qt-tutorial.html

标签: c++ qt clion


【解决方案1】:

我和你一样绝望,直到我读到this Quora discussion。 它非常适合我!

总而言之,有两个主要步骤:

首先,CLion 使用 CMake 编译您的代码。它基于 CMake 配置文件(例如“CMakeLists.txt”)。您必须添加基于 Qt 的 CMake 命令(带有 'find_package' 和 'target_link_libraries' 的行):

cmake_minimum_required(VERSION 3.5)
project(myqtproject)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
find_package(Qt5Widgets REQUIRED)                 <-- this line

add_executable(myqtproject ${SOURCE_FILES})

target_link_libraries(myqtproject Qt5::Widgets)   <-- this line

其次,CLion 必须使用 Qt 安装的 cmake 二进制文件。为此,请访问: 'Preferences' -> 'Build, Execution, Deployment' -> 'CMake' 并在 'CMake options' 中附加 Qt 使用的 CMake 路径,该路径应位于安装 Qt 的目录中。例如,在 OSX 上:

-DCMAKE_PREFIX_PATH=/Users/edouard/Qt/5.7/clang_64/lib/cmake

您可以通过在main.cpp 中编写一个小测试脚本来测试一切是否正常:

#include <QApplication>
#include <QDebug>

using namespace std;

int main() {
    qDebug() << QT_VERSION_STR;
    return 1;
}

应该显示如下内容:

/Users/edouard/Library/Caches/CLion2016.2/cmake/generated/myqtproject-89a4132/89a4132/Debug/untitled
5.7.0

Process finished with exit code 1

更新

我遇到了添加 Qt5 模块(例如 QSql)的问题。您可以通过添加 CMakeLists.txt 来做到这一点:

find_package(Qt5Sql REQUIRED)

就在另一个find_package之后,并在最后一行添加:

target_link_libraries(myqtproject Qt5::Widgets Qt5::Sql)

您可以对所有其他 Qt5 模块执行此操作。

【讨论】:

    【解决方案2】:

    更新

    Jet Brain 网站上现在有一个官方教程:

    https://www.jetbrains.com/help/clion/qt-tutorial.html

    原答案

    这种方法是用于最新 Qt 版本的最简单方法之一。

    Qt:    5.10.1
    CLion: 2018.1.2
    GDB:   8.1
    

    项目设置

    CLion中:

    1. 创建一个C++ 可执行文件/项目
    2. 将此示例“CMakeLists.txt”用于常见的控制台/gui 项目,这些项目使用:QtCoreQtWidgetsQtQuick

    CMakeLists.txt:

    cmake_minimum_required(VERSION 3.10)
    project(PROJECT_NAME)
    
    set(CMAKE_CXX_STANDARD 14)
    
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTOUIC ON)
    set(CMAKE_AUTORCC ON)
    
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    set(CMAKE_PREFIX_PATH "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/cmake")
    
    find_package(Qt5Core REQUIRED)
    find_package(Qt5Widgets REQUIRED)
    find_package(Qt5Quick REQUIRED)
    
    add_executable(PROJECT_NAME main.cpp MainWindow.cpp MainWindow.h qml.qrc)
    
    target_link_libraries(PROJECT_NAME Qt5::Core)
    target_link_libraries(PROJECT_NAME Qt5::Widgets)
    target_link_libraries(PROJECT_NAME Qt5::Quick)
    
    • 资源文件 (.qrc) 应添加到 add_executable 列表中,在 为了使 moc 能够在资源和 内部文件,如 qmls,文本,... 可访问。

    • qml 文件应包含在 qrc 文件中并在运行时使用 QQmlApplicationEngine 加载

    调试器:

    为了在 Qt 类型的调试会话中获得人类可读的视图,必须在系统上安装新的 GDB 并且必须有漂亮的打印机:

    Qt5 的漂亮打印机:

    1- Lekensteyn Qt5 Pretty Printers(工作中):

    地址:https://github.com/Lekensteyn/qt5printers

    设置:~/.gdbinit

    python
    import sys, os.path
    sys.path.insert(0, os.path.expanduser('~/.gdb'))
    import qt5printers
    qt5printers.register_printers(gdb.current_objfile())
    end
    

    2- 官方(不工作!!!):

    "PATH_TO_QT/QT_VERSION/QT_ARCH/Tools/QtCreator/share/qtcreator/debugger/"
    

    设置:~/.gdbinit

    如包含的自述文件中所述(但不起作用!):

    python sys.path.insert(1, '<path/to/qtcreator>/share/qtcreator/debugger/')
    python from gdbbridge import *
    

    外部工具

    在“文件->设置->工具->外部工具”中,添加4个外部工具:

    Qt 创建者:

    Program:   "PATH_TO_QT/QT_VERSION/QT_ARCH/Tools/QtCreator/bin/qtcreator"
    Arguments: $FilePath$
    

    界面设计师:

    Program:   "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/designer")
    Arguments: $FilePath$
    

    L更新:

    Program:   "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/lupdate")
    Arguments: $FilePath$ -ts $FileNameWithoutExtension$.ts
    

    语言学家:

    Program:   "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/linguist")
    Arguments: $FilePath$
    

    现在您可以右键单击这些文件类型并在外部工具下:

    1. 对于 .ui 选择 Qt Creator/Designer 并开始 UI 设计
    2. 对于 .qml,选择 Qt Creator 并在 QML 编辑器中设计 UI
    3. 对于 .qrc 选择 Qt Creator 并使用资源编辑器
    4. 对于 .cpp/.ui 选择 LUpdate 以创建其翻译文件
    5. 对于 .ts 选择 Linguist 并开始翻译

    自动美化器

    如果在Qt Creator中你使用了像“Uncrustify”这样的美化工具来自动美化保存源文件的代码,那么:

    1. 安装插件“保存操作
    2. 在“文件->设置->保存操作”下
    3. 检查:
    4. 保存时的主动保存操作
    5. 重新格式化文件
    6. 为了获得最佳性能,请取消选中:
    7. 组织导入

    【讨论】:

      【解决方案3】:

      正如 Tom Lank 所提到的,现在可以使用 CMake 管理和构建 Qt 项目,这让 CLion 很高兴。

      Qt5's CMake manual 描述了如何。 Qt 在幕后提供了很多魔法,CMake documentation 对此进行了更好的解释。

      Qt CMake 手册或以上未提及的一件事是,您还需要以下行:

      set(CMAKE_AUTOUIC ON) # if you have any .ui files
      set(CMAKE_AUTORCC ON) # if you have any .qrc files 
      

      所有这些对set() 的调用都应该出现在find_package(Qt5Widgets REQUIRED) 行之前。还包括任何 .ui 或 .qrc 文件作为对 add_executable() 的调用中的依赖项以及 .cpp 文件。

      最初浏览网页时我很困惑,但您不需要致电qt_*()qt5_*()。据我所知,这些已被取代。

      要测试您的 CMakeLists.txt 是否确实正常工作,您可以尝试在 Qt Creator 中构建,方法是将 CMakeLists.txt 作为项目加载并构建。

      确认后,您可以将CMakeLists.txt 文件作为项目加载到 CLion 中。 最有可能的是,您需要在 find_package's 之前用这样的一行告诉 CMake 在哪里可以找到您的 Qt 包:

      set(CMAKE_PREFIX_PATH "C:/Qt/5.9/msvc2015_64")
      

      最后,如果您在 Windows 上运行/构建,Qt 不再预构建 GCC/Mingw32 库。您需要使用 Visual Studio 构建。幸运的是,CLion now supports Visual Studio experimentally 我发现它适用于 Qt 项目;只需确保将架构(在 Settings->Build, Execution, Development->CMake 下)设置为 x86_amd64,以便在 64 位模式下构建并与 Qt 的预构建库兼容。

      所有这些都使用 CLion 2017.1、Qt 5.9 和 Visual Studio 2015 编译器进行了测试。

      【讨论】:

      • 这对我来说是最简单快捷的解决方案
      【解决方案4】:

      您可以在 CLion 中构建 QT 应用程序。 QT 提供了处理所有细节的 CMake 模块。

      以下 CMake 脚本构建示例应用程序“Dynamic Layouts Example

      cmake_minimum_required(VERSION 3.7)
      project(qtlayoutexample)
      set(CMAKE_CXX_STANDARD 14)
      
      # Find QT packages
      find_package(Qt5Widgets)
      
      # Add the include directories for the Qt 5 Widgets module to
      # the compile lines.
      include_directories(${Qt5Widgets_INCLUDE_DIRS})
      
      # Find includes in corresponding build directories
      set(CMAKE_INCLUDE_CURRENT_DIR ON)
      # Instruct CMake to run moc automatically when needed.
      set(CMAKE_AUTOMOC ON)
      
      # Add compiler flags for building executables (-fPIE)
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
      
      qt5_generate_moc(main.cpp main.moc)
      
      # Tell CMake to create the qtlayoutexample executable
      add_executable(qtlayoutexample main.cpp dialog.cpp main.moc)
      
      #Link the qtlayoutexample executable to the Qt 5 widgets library.
      target_link_libraries(qtlayoutexample Qt5::Widgets)
      

      更多信息regarding building Qt applications with CMake

      【讨论】:

        【解决方案5】:

        此链接有一个快速启动项目,您只需将 CMakeLists 中的 CMAKE_PREFIX_PATH 更改为您要使用的 Qt 打包编译器的位置(我的是 gcc_64,他的默认是 clang_64)——它有一些设置已设置的其他答案提到:

        https://github.com/ArneGockeln/qtstarter

        此外,(在基于 Ubuntu 的 Linux 上)我必须安装此处所述的 OpenGL 库 (https://askubuntu.com/questions/11378/how-do-i-set-up-an-opengl-programming-environment)。

        【讨论】:

          【解决方案6】:

          当您使用 CMake 作为构建工具时,您可以使用 VC、Eclipse、CLion 等轻松开发 Qt。 CMake 将为每个 IDE 生成项目文件。我以这种方式使用了几个 IDE。在这段旅程之后,我是一个更快乐的 Qt Creator 用户。

          【讨论】:

            【解决方案7】:

            您唯一需要做的就是将 QT install ..Qt\5.10.1\mingw53_32\bin; 添加到您的 PATH 中。之后不要忘记重启电脑,因为 CLion 出于某种原因无法刷新路径,只有完全重启电脑有帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-10-09
              • 1970-01-01
              • 2017-04-07
              • 2021-09-27
              • 2020-05-27
              • 2023-03-26
              • 1970-01-01
              相关资源
              最近更新 更多