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 (в качестве эксперимента).

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

Итак, первоначальные изменения добавили не так много функционала, а именно:

Тогда же забрезжила идея о добавлении в плагин поддержки парсинга CMakeFiles.txt минуя запуск CMake и генерации .cbp файла. Но (забегая вперёд) эта идея так и осталась идеей: был написан отдельно парсер и токенайзер на основе исходного кода CMake, но наработки канули в лету вместе с очередным крахом винта. До интеграции в плагин так и не дошло.

Второй пакет изменений был добавлен в 2012 году, включал следующие фичи и исправления:

Начиная с этой версии можно достаточно комфортно использовать 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 выключен (issue #4).

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

Стоит отметить, что пользовательский ввод параметров сохранён, более того, определяется, если параметр уже задан, то будет использоваться пользовательский.

Ну и картинка, как это выглядит:


Если кому-то это покажется полезным, буду рад. Особенно я буду рад пул-реквестам с исправлением багов и реализацией новых фич. Репорты тоже хорошо, но по тенденции развития проекта можете понять: особо времени на него нет, так что реакция может быть от «медленно» до «ооооочень медленно».

UPD /2015-07-18/: Сделал PPA для Ubuntu 14.04/Mint 17.x с QtC из git [master] и CMakeProjectManager2: launchpad.net/~adrozdoff/+archive/ubuntu/qtcreator-git
@
22.01.2015 10:15 UTC
Первоисточник