WedX - журнал о программировании и компьютерных науках

Как настроить CLion IDE для Qt Framework?

Как настроить CLion IDE для Qt Framework? Совместима ли эта IDE с Qt, или есть другие IDE, совместимые с Qt?

Я просто хочу попробовать использовать что-нибудь еще, кроме Qt Creator.

14.05.2015

  • Я не думаю, что этот вопрос достоин такой отрицательной оценки. Хотя ответ можно найти с помощью поиска в Google, для этого потребуется довольно много времени. Обнаружив это, я получил ответ намного быстрее. 11.06.2015
  • @Claudio Вопрос не в том, какая IDE лучше, а в том, как CLion может работать с Qt. Ваш ответ не помогает ответить ни на эту тему, ни на тех, кто хочет разрабатывать с Qt без использования Qt Creator. 29.01.2017
  • Обратите внимание, что (сейчас) есть официальная страница Jetbrains об этом: jetbrains.com /help/clion/qt-tutorial.html 10.07.2020

Ответы:


1

Я был в таком же отчаянии, как и вы, пока не прочитал это обсуждение на Quora. У меня это сработало отлично!

Подводя итог, можно выделить 2 основных шага:

Во-первых, CLion использует CMake для компиляции вашего кода. Он основан на файлах конфигурации CMake (например, «CMakeLists.txt»). Вам нужно добавить команды CMake на основе Qt (строки с '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 должен использовать двоичный файл cmake, установленный Qt. Для этого перейдите в: «Preferences» -> «Build, Execution, Deployment» -> «CMake» и в «CMake options» добавьте путь CMake, который использует Qt, который должен находиться в каталоге, где установлен 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.

16.08.2016

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 ++ / Library
  2. Используйте этот образец CMakeLists.txt для общих консольных / графических проектов, в которых используются: QtCore, QtWidgets и QtQuick

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

Как указано во включенном файле readme (но не работает!):

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

Внешние инструменты

В Файл - ›Настройки -› Инструменты - ›Внешние инструменты добавьте 4 внешних инструмента:

Qt Creator:

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$

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$

Теперь вы можете щелкнуть правой кнопкой мыши по этим типам файлов и под внешним инструментом:

  1. Для .ui выберите Qt Creator / Designer и начните проектирование пользовательского интерфейса.
  2. Для .qml выберите Qt Creator и создайте пользовательский интерфейс в редакторе QML.
  3. Для .qrc выберите Qt Creator и используйте редактор ресурсов
  4. Для .cpp / .ui выберите LUpdate, чтобы создать файл перевода.
  5. Для .ts выберите Linguist и начните перевод

Automatic Beautifier

Если в Qt Creator вы использовали средство красоты, такое как Uncrustify, для автоматического улучшения кода при сохранении исходного файла, тогда:

  1. Установите плагин Сохранить действия
  2. В разделе "Файл" - ›Настройки -› Сохранить действия.
  3. Проверять:
  4. Активные действия при сохранении
  5. Переформатировать файл
  6. Для лучшей производительности снимите галочку:
  7. Организовать импорт
06.05.2018

3

Как упоминает Том Лэнк, проектами Qt теперь можно управлять и строить под ним, что делает CLion счастливым.

В руководстве Qt5 по CMake описано, как это сделать. Qt предоставляет здесь много волшебства, и это гораздо лучше объяснено в Документация CMake.

Одна вещь, которая не упоминается в руководстве 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. Скорее всего, вам нужно указать CMake, где найти ваши пакеты Qt, с помощью такой строки перед вашим find_package:

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

Наконец, если вы используете / build для Windows, Qt больше не поставляется с предварительно собранными библиотеками GCC / Mingw32. Вам нужно строить с помощью Visual Studio. К счастью, CLion теперь экспериментально поддерживает Visual Studio, и я обнаружил, что она работает для проектов Qt; просто не забудьте установить архитектуру (в разделе «Настройки-> Сборка, выполнение, Разработка-> CMake») на x86_amd64, чтобы сборка была в 64-битном режиме и была совместима с библиотеками предварительной сборки Qt.

Все это проверено с помощью CLion 2017.1, Qt 5.9 и компилятора Visual Studio 2015.

12.07.2017
  • Для меня это было самое простое и быстрое решение 21.10.2019


  • 5

    В этой ссылке есть проект быстрого запуска, вам просто нужно изменить свой CMAKE_PREFIX_PATH в CMakeLists на местоположение упакованного компилятора Qt, который вы хотите использовать (мой - gcc_64, его по умолчанию - clang_64) - у него есть некоторые настройки, упомянутые другими ответы уже установлены:

    https://github.com/ArneGockeln/qtstarter

    Вдобавок (в Linux на базе Ubuntu) мне пришлось установить библиотеки OpenGL, как описано здесь (https://askubuntu.com/questions/11378/how-do-i-set-up-an-opengl-programming-environment).

    09.02.2018

    6

    Вы можете легко разработать Qt с помощью VC, Eclipse, CLion и т. Д., Когда вы используете CMake в качестве инструмента сборки. CMake сгенерирует файлы проекта для каждой IDE. Таким образом я использовал несколько IDE. После этого путешествия я стал еще более счастливым пользователем Qt Creator.

    19.10.2015

    7

    Единственное, что вам нужно, это добавить QT install ..Qt\5.10.1\mingw53_32\bin; в ваш PATH. Не забудьте после этого перезагрузить компьютер, потому что CLion по какой-то причине не может обновить путь, помогает только полный перезапуск компьютера.

    05.05.2018
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]