CMakeProjectManager2: трохи зручності при роботі з CMake Qt Creator

Добрий День,

CMakeProjectManager2 — це форк оригінального плагіна Qt Creator для підтримки роботи з системою складання CMake. Млява історія розвитку цього проекту йде з 2011 року (перша моя замітка в блозі: htrd.su/wiki/zhurnal/2011-03-24_14.49_qt_creator_i_cmake_-_prodolzhenie, друге оновлення від 2012 року: htrd.su/wiki/zhurnal/2012/10/17/cmakeprojectmanager2_-_poslednie_izmenenija). З тих пір нічого нового не додавалося. Забезпечувалася сумісність з останніми версіями Qt Creator, репозиторій переїхав на GitHub (в якості експерименту).

Але за вчора і сьогодні додалося ще кілька змін, що і стало приводом згадати проект на Хабре.

Отже, первісні зміни додали не так багато функціоналу, а саме:
  • Структура файлів проекту не береться .cbp файлу, а скануванням дерева проекту. Як варіант може виявитися повільно на великих проектах, з іншого боку, релоадинг дерева відбувається не кожен раз, а при зміні CMakeLists.txt або додавання, видалення, перейменування файлів (цього, до речі, в базовому плагіні немає)
  • Тепер можна створювати нові файли в дереві проектів безпосередньо з Qt Creator'а
  • З'явилася можливість перейменовувати файли
  • З'явилася можливість видаляти файли з диска
Тоді ж з'явилася ідея про додавання в плагін підтримки парсинга CMakeFiles.txt минаючи запуск CMake і генерації .cbp файлу. Але (забігаючи вперед) ця ідея так і залишилася ідеєю: був написаний окремо парсер і токенайзер на основі вихідного коду CMake, але напрацювання канули в лету разом з черговим крахом гвинта. До інтеграції в плагін так і не дійшло.

Другий пакет змін був доданий в 2012 році, включав такі фічі і виправлення:
  • Для кожного профілю складання зберігаються введені параметри для CMake, так що, вибравши в наступний раз «Run CMake» не потрібно згадувати, з якими параметрами ви його запускали і легше управляти профілями складання. Укупі з останньої фичей з апстрима: збереження глобальної історії параметрів для CMake, виходить досить потужний механізм.
  • Використовуючи вищенаведену інформацію, з'явилася можливість при модифікації дерева исходников (додавання, видалення, перейменування) в фоновому режимі запускати оновлення CBP файлу і дерева збірки, що особливо актуально при використанні глоббинга.
  • У порівнянні з першим варіантом, вийшло значно скоротити витрачання пам'яті при використанні плагіна, особливо коли в дереві проекту багато допоміжних модулів, тимчасового C/C + + коду.
Починаючи з цієї версії можна досить комфортно використовувати CMake якщо формування списку файлів засноване на глоббинге, тобто якщо список задається по масці, приблизно так:
# UTILS
file(GLOB_RECURSE UTIL_SOURCES "../util/*.cpp")
file(GLOB_RECURSE UTIL_HEADERS "../util/*.h" "../util/*.hpp")

При додаванні файлу через Qt Creator автоматично оновиться кеш і файл побачиться в дереві, системою складання і парсером C++.

З тих пір кодова база тільки синхронізувалася з апстримом (по суті, великих змін щодо нього немає). Для першої версії була спроба подати мерж-реквест, але відкинули через відображення всіх файлів, замість тих, які прописані в CMakeLists.txt. Після цього спроби припинив. Бажаючі пропхати частину або всі зміни — велком!

Але ось сталося так, що виникла необхідність у крос-компіляції CMake проектів з надр Qt Creator'а. Зробити це не важко, достатньо оформити Toolchain-файл (докладніше) і передати його через спеціальний параметр процесу cmake. Незручно тільки кожен раз прописувати параметри руками.

Так виникли зміни, які з'явилися сьогодні в репозиторії:
  • Додана можливість вибирати тип складання
  • Додана можливість призначати тулчейн
Так, змін не багато, але, думаю, це і не важливо. Важливо, що стало трішки зручніше і простіше.

По суті, ці параметри служать для завдання в більш дружньою форми параметрів для CMake: -DCMAKE_BUILD_TYPE= і-DCMAKE_TOOLCHAIN_FILE відповідно.

Про тулчейн трохи докладніше. Спочатку планувалося три способи його завдання:
  • Автоматичне конструювання на основі Qt Creator Kit (зараз це знання використовується тільки парсером, cmake ж цілком може знайти будь-який інший відповідний компілятор і використовувати його для складання)
  • Ручне завдання файлу (поки зроблено без можливості відкриття діалогу пошуку, тільки ручне введення: issue #2
  • «Інлайн» тулчейн: редагує у вбудованому редакторі, при запуску контент зберігається у директорії відбудови під ім'ям QtCreator-toolchain-override.cmake
Поки варіант на основі Qt Creator Kit вимкнений (issue #4).

Плюс є нюанс: згідно документації CMake, зміна тулчейна можливо тільки на новій конфігурації або на повне очищення поточної (видалення CMakeFiles і CMakeCache.txt), тому, якщо помічені зміни налаштувань тулчейна, проводиться повне переконфігурування без використання кеша. Планую додати діалог з попередженням (issue #1).

Варто відзначити, що інтерфейс введення параметрів збережений, більш того, визначається, якщо параметр вибрано, то буде використовуватися інтерфейс.

Ну і картинка, як це виглядає:


Якщо комусь це здасться корисним, буду радий. Особливо я буду радий пул-реквестам з виправленням помилок і реалізацією нових фіч. Репорти теж добре, але по тенденції розвитку проекту можете зрозуміти: особливо часу на нього немає, так що реакція може бути від «повільно» до «дуууже повільно».

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.