c++ - 如何将 CLion (1.2.4) 用于涉及 Qt Creator 的项目?

标签 c++ qt-creator clion

Qt Creator 使 GUI 创建变得非常容易,但我宁愿使用 CLion 进行编码部分,并且只使用 Qt Creator 进行 GUI 编辑。

最佳答案

绝对有可能!

我在 Mac 上,所以我做的一些事情在其他操作系统上不会完全相同。它们是小而简单的事情,一点点 google-fu 应该可以相对轻松地修复。

步骤 1:创建 Qt Creator 项目

我将在此示例中使用小部件应用程序。稍后我将讨论其他类型的项目。

我强烈推荐的一件事是将构建目录(在侧边栏上的“项目”选项卡下)更改为相对路径而不是绝对路径,尤其是在进入 GitHub 或类似路径时。我把它改成了 ./QtBinDebug .

哦,记得复制或以其他方式将 main.cpp 的内容保存在一个单独的位置。为以后。

Qt 就是这样。从现在开始,我们只需要在编辑 GUI 时使用 Qt Creator。

第 2 步:在 CLion 中打开项目

CLion 需要创建一些文件才能使用我们的项目。告诉 CLion 创建一个新项目,但将项目命名为与我们在 Qt Creator 中创建的完全相同的项目,并将 CLion 指向相同的路径。它应该警告你已经存在的文件,忽略它。

CLion 将非常有帮助地覆盖 main.cpp .把你从 QtCreator 复制的东西放回去。

第 3 步:调用正确的 Makefile

Qt Creator 实际上会生成它自己的 makefile,它将调用 qmake,并执行一大堆其他魔术。太疯狂了...我可以替换我现有的 CMakeLists.txt

cmake_minimum_required(VERSION 3.3)
project(WindowTest)
set(QT_BIN "${PROJECT_SOURCE_DIR}/QtBinDebug")
add_custom_target(qtMakeFile COMMAND make -C ${QT_BIN})

这将完美地构建项目!唯一的问题是 CLion
目前仅支持 CMake 项目。上面的 CMakeLists 通过告诉 CMake 只调用 make 来解决这个问题。在正确的 makefile 上,但 IDE 本身不知道如何解释我们的代码......

第 4 步:找出 Qt 库的安装位置

我通过 Homebrew 安装了 Qt,并在 /usr/local/Cellar/qt5/5.5.1_2/lib/cmake 找到了我需要的库.如果你告诉 Homebrew 链接安装,/usr/local/opt/qt5/lib/cmake也可以工作,并且还有一个额外的好处,就是让你的 Qt 版本保持最新,而无需更改任何内容!

第 5 步:在 CLion 的 Qt 库中链接

如果您像我一样,当 CLion 会自动完成所有内容并且不会到处乱扔红色文本时,您宁愿使用 CLion。

我们需要告诉 CLion 在哪里寻找它缺少的库。对于一个基本的 Widgets 项目,我需要 Qt5CoreQt5Widgets .要确定您需要什么,请检查 Qt Creator 生成的 makefile。您应该在 LIBS 的顶部附近找到您需要的东西。宏。

对于链接,我们将使用 find_package(...)target_link_libraries(...)命令。虽然我们可以将所有内容硬编码到这两个命令中,但我认为将其分解一点是个好主意。

另一个小细节是 Qt Creator 放置在构建目录中的头文件。对于骨架小部件项目,它是 ui_mainwindow.h .我们可以告诉 CLion 在哪里查看 include_directories(...)命令。

我的 CMakeLists.txt :
cmake_minimum_required(VERSION 3.3)
project(WindowTest)

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

#Base QT directory
set(QT_PATH "/usr/local/opt/qt5")
#Build output path of your QT Creator project
set(QT_BIN "${PROJECT_SOURCE_DIR}/QtBinDebug")

#Qt5 paths
#Qt5 library path
set(QT5_LIB_DIR ${QT_PATH}/lib/cmake)
#Qt5 individual libraries
set(QT5_CORE ${QT_LIB_DIR}/Qt5Core)
set(QT5_WIDGETS ${QT_LIB_DIR}/Qt5Widgets)
set(QT5_GUI ${QT_LIB_DIR}/Qt5Gui)

#Libraries to link to. The :: is for convenience
set(QT_LIBRARIES Qt5::Core Qt5::Widgets Qt5::Gui)
#Libraries required. Probably the same as above minus the '::'. find_package() will be called on these
set(QT_LIBRARIES_REQUIRED Qt5Core Qt5Widgets Qt5Gui)

#find packages
foreach(QT_LIBRARIES_REQUIRED ${QT_LIBRARIES_REQUIRED})
    find_package( ${QT_LIBRARIES_REQUIRED} REQUIRED )
endforeach()

add_custom_target(qtMakefile COMMAND make -C ${QT_BIN})

include_directories(${QT_BIN})

set(SOURCE_FILES main.cpp mainwindow.cpp mainwindow.h mainwindow.ui)

add_executable(WindowTest ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} ${QT_LIBRARIES})

第 6 步:设置 CLion 以实际正确运行事物

运行配置菜单中应该会弹出一个配置。对我来说,上面的 CMake 文件就是 qtMakefile。我们需要对该目标做最后一件事,所以点击“编辑配置...”

我们需要选择 CLion 在构建后应该运行的可执行文件。在可执行文件部分,单击“选择其他...”并选择小部件的可执行文件。我的是在 QtBinDebug/WindowTest.app/Contents/MacOS/WindowTest .

就是这样!恭喜!

缺点

调试不起作用。调试器没有在我放入测试程序的简单 hello world 上进行链接。不过,说实话,我真的不想掉进那个兔子洞。

优点

自动完成 wazoo

关于c++ - 如何将 CLion (1.2.4) 用于涉及 Qt Creator 的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35667676/

相关文章:

c++ - QTCreator 如何在使用行编辑时启用密码填充选项?

c++ - 使用 Qt ARM 预构建二进制文件进行交叉编译

c++ - 在派生类的基类构造函数中使用重写函数

c - 未找到 Qt 创建者标准头文件

c++ - 如何在 win 2003 上使用 VC6 附加到进程?

c++ - Cmake - 如何复制带有输入数据的文件以构建输出文件夹

c++ - 如何在 Clion 和 CMake 中添加 allegro 库?

CLion 建议使用 'strtol' 而不是 'scanf'

c++ - 如何在 OpenNIGrabber 上设置特定的设备 ID?

c++ - 快速有效地从文件映射中搜索大型 C++ 字符串