Hel*_*tes 4 c++ qt-creator clion
Qt Creator使GUI创建变得非常容易,但我宁愿将CLion用于编码部分,而只使用Qt Creator进行GUI编辑.
绝对有可能!
我在Mac上,所以我做的一些事情对于其他操作系统来说不会完全相同.它们是一些小而简单的东西,有些谷歌应该相对无痛地修复.
我将在这个例子中使用小部件应用程序.稍后我会进入其他类型的项目.
我强烈建议的一件事是将构建目录(在侧栏上的"项目"选项卡下)更改为相对路径而不是绝对路径,尤其是在进入GitHub或类似内容时.我改成了./QtBinDebug.
哦,并记得复制或以其他方式保存在一个单独的位置的内容main.cpp供以后使用.
这就是Qt.从现在开始编辑我们的GUI时,我们只需要使用Qt Creator.
CLion需要创建一些文件才能使用我们的项目.告诉CLion创建一个新项目,但是将项目命名为与我们在Qt Creator中创建的项目完全相同,并将CLion指向同一路径.它应该警告你已经存在的文件,只需忽略它.
克里昂将非常有帮助地覆盖main.cpp.把你从QtCreator复制的东西放回去.
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})
Run Code Online (Sandbox Code Playgroud)
这将完美地构建项目!唯一的问题是CLion现在只支持CMake项目.上面的CMakeLists通过告诉CMake只调用make正确的makefile 来解决这个问题,但IDE本身并不知道如何解释我们的代码......
我通过Homebrew安装了Qt,找到了我需要的库/usr/local/Cellar/qt5/5.5.1_2/lib/cmake.如果你告诉Homebrew链接安装,/usr/local/opt/qt5/lib/cmake也会工作,并且还有一个额外的好处,就是让你的Qt版本保持最新而不需要改变任何东西!
如果你像我一样,你宁愿使用CLion,它会自动完成所有内容并且不会在任何地方丢红色文本.
我们需要告诉CLion在哪里寻找它缺少的库.对于一个基本的Widgets项目,我需要Qt5Core和Qt5Widgets.要确定您需要什么,请检查生成的makefile Qt Creator.您应该在LIBS宏顶部附近找到所需的内容.
对于链接,我们将使用find_package(...)和target_link_libraries(...)命令.虽然我们可以将所有内容硬编码到这两个命令中,但我认为将其分解为一个好主意.
另一个小细节是Qt Creator放置在构建目录中的头文件.对于骨架小部件项目,它是ui_mainwindow.h.我们可以通过include_directories(...)命令告诉CLion在哪里查看.
我的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})
Run Code Online (Sandbox Code Playgroud)
应该在运行配置菜单中弹出一个配置.对我来说,使用上面的CMake文件,它是qtMakefile.我们需要对该目标做最后一件事,所以点击"编辑配置......"
我们需要选择CLion在构建之后应该运行的可执行文件.在"可执行文件"部分中,单击"选择其他..."并选择窗口小部件的可执行文件.我在QtBinDebug/WindowTest.app/Contents/MacOS/WindowTest.
就是这样!恭喜!
调试不起作用.调试器没有链接到我放入测试程序的简单hello世界.说实话,我真的不想去那个兔子洞.
自动完成wazoo