如何为Qt框架配置CLion集成开发环境?这个IDE是否与Qt兼容,或者是否有其他IDE与Qt兼容?
我只想尝试使用Qt Creator之外的其他工具。
发布于 2016-08-16 17:48:28
我和你一样绝望,直到我读了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模块执行此操作。
发布于 2018-05-07 05:32:15
更新
Jet Brain网站上现在有一个官方教程:
https://www.jetbrains.com/help/clion/qt-tutorial.html
原始答案
此方法是用于最新Qt版本的最简单方法之一。
Qt: 5.10.1
CLion: 2018.1.2
GDB: 8.1项目设置
在CLion中
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)调试器:
为了在Qt类型的调试会话中具有人类可读的视图,必须在系统上安装新的GDB,并且必须提供漂亮的打印机:
适用于Qt5的漂亮打印机:
1- Lekensteyn Qt5 Pretty打印机(工作中):
地址: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())
end2-官方(不工作!):
"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 *外部工具
在"File -> Settings -> Tools -> External Tools“中,添加4个外部工具:
Qt Creator:
Program: "PATH_TO_QT/QT_VERSION/QT_ARCH/Tools/QtCreator/bin/qtcreator"
Arguments: $FilePath$UI设计器:
Program: "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/designer")
Arguments: $FilePath$LUpdate:
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$现在,您可以右键单击这些文件类型,然后在外部工具下:
>G246
自动美容仪
如果在Qt Creator中使用了像"Uncrustify“这样的美化器来自动美化保存源文件的代码,那么:
为了获得最佳性能un-check:
,请在save
发布于 2017-07-13 01:43:08
正如Tom Lank提到的,Qt项目现在可以在CMake下管理和构建,这让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之前用下面这样的一行告诉CMake在哪里可以找到你的Qt包:
set(CMAKE_PREFIX_PATH "C:/Qt/5.9/msvc2015_64")最后,如果你在/built for windows上运行,Qt不再预构建了GCC/Mingw32库。您需要使用visual studio进行构建。幸运的是,CLion now supports Visual Studio experimentally和我发现它适用于Qt项目;只需确保将架构(在设置->构建,执行,开发->CMake下)设置为x86_amd64,以便在64位模式下构建,并与Qt的预构建库兼容。
所有这些都在CLion 2017.1、Qt5.9和Visual Studio2015编译器上进行了测试。
https://stackoverflow.com/questions/30235175
复制相似问题