QT, C++, Linux и Vim

317
29 января 2018, 06:26

Недавно решил перейти к изучению С++ и QT (до этого изучал Си) и хотел прояснить несколько вещей для себя. Прошу не ругать меня строго, так как я только-только начинаю: всего-то пока скачал книгу Прата по С++, а про QT знаю только по страничке в Википедии.

Вообщем:

1) Что нужно для программирования с помощью QT на линуксе?

2) Нужен ли для этого обязательно QTCreator?

3) Вопрос вытекает из предыдущих двух: можно ли использовать QT пользуясь vim-ом в качестве редактора, clang-ом для компиляции и make-ом для сборки проектов?

Не то, чтобы я априори не любил IDE, но мне больше нравится другой вариант (чисто субъективно). Программирование для меня просто хобби.

Answer 1

Что нужно для программирования с помощью QT на линуксе?

Минимальный набор стандартен: компилятор, редактор, собственно Qt с его инструментами (moc, uic, qmake), хедерами и прочей dev-мишурой и, конечно, собственные знания.

Кроме того желательно:

  • Высокоуровневая система сборки с поддержкой Qt (можно и вручную писать Makefile'ы, но это дело тем менее благодарное, чем сложнее организация проекта); основные варианты:
    • qmake, родной, требует минимального изучения, но не универсальный и не очень гибкий
    • cmake, универсальный, требует отдельного (хотя бы минимального) изучения.
    • Autotools — инструмент матёрых GNU'шников. Сложен.
  • Если нет желания прописывать создание формочек в коде, а пользоваться Qt'шным генератором то крайне желателен designer.
  • Плагины для редактора в меру своей испорченности. Для автодополнения vim/плюсов хороша будет комбинация YCM+clang+cmake.
  • Отладчик. Если с голым gdb чувствуешь себя комфортно/готов разбираться, то его хватит. Если нет, то придётся пользоваться IDE т.к. нормального лёгкого гуя к нему не существует. Также крайне полезно стащить из kdevelop pretty-printer'ы для Qt.

Нужен ли для этого обязательно QTCreator?

Нет.

Вопрос вытекает из предыдущих двух: можно ли использовать QT пользуясь vim-ом в качестве редактора, clang-ом для компиляции и make-ом для сборки проектов?

Да. С оговорками про make.

Answer 2

можно ли использовать QT пользуясь vim-ом в качестве редактора, clang-ом для компиляции и make-ом для сборки проектов?

Да, причём спокойно. Единственное, что вам потребуется — это:

  • заголовочные (.h) файлы,
  • динамические библиотеки самого Qt,
  • статические библиотеки, чтобы можно было при компоновке добавить импорты из вышеуказанных динамических библиотек.

Также существует несколько утилит, необходимость в которых зависит исключительно от используемых вами возможностей Qt:

  • moc — если у вас есть прямые или косвенные наследники от QObject, в теле которых встречаются сущности вида Q_* (Q_OBJECT, Q_INVOKABLE и т. д.), вам надо пропустить через эту утилиту .hpp-файлы с объявлением этих классов. На выходе будет дополнительный .cpp-файл, который надо скормить компоновщику вместе с остальными.

  • rcc — если у вас есть файлы ресурсов (.rc), то их тоже надо преобразовать в .cpp с помощью этой утилиты.

  • uic — всё то же самое, только для файлов Qt Designer (.ui).

Это, по сути, необходимый минимум для использования Qt. Всё остальное — лишь упрощающая жизнь обвязка поверх этой базы.

То есть вы можете спокойно пользоваться make, вызывая все эти утилиты из Makefile вручную. Например так:

# * win_main.o — получен из win_main.cpp
# * win_main_ui.o — получен из win_main.ui
your_app: win_main.o win_main_ui.o
    # Вызов компоновщика
%.o: %.cpp
    # Вызов компилятора
%_ui.cpp: %.ui
    uic -o "$@" $^
READ ALSO
Разбить элементы массива на группы и преобразовать их

Разбить элементы массива на группы и преобразовать их

Помогите, пожалуйста, решить задачу по программированию в с++Разбить элементы массива на группы по 4

235
Множественная перегрузка операторов

Множественная перегрузка операторов

Неправильно сравнивает 2 массива, вместо false(-) выдает true(+)В чем проблема? (Функция помечена комментарием)

215
Натуральный логарифм числа

Натуральный логарифм числа

Какая функция вычисляет натуральный логарифм числа в C++?

214
память в куче C++

память в куче C++

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

167