← All posts tagged cmake

hatred
blog programming qtcreator cmake CMakeProjectManager2 CMakeProjectManager2: теперь и с Server Mode: htrd.su

Плагин не претендует на оригинальность. Всё что он делает, это:
— отображает все файлы в дереве проекта (Project View), вместо того, что было взято из модели CMake. В версиях QtC > 4.2, файлы не их модели отображаются бледным цветом.
— позволяет использовать контекстеное меню в Project View для добавления файлов/классов, переименования и удаления. При этом никаким образом не модифицируется соответствующий CMakeLists.txt и прочие таргеты. Это этого нужно иметь парсер, по аналогии с KDevelop (выпилен в 5.0, есть в 4.6) или Clion. Оба проекта стонут от необходимости поддержки этого куска г-на. Server Mode в CMake не решает этой проблемы.
— в новом обличии заменяет представление дерева проекта в Server Mode в простую иерархию, которая используется для CMake < 3.7. Сделано что бы была возможность реализовать два предыдущих пункта. И мне тупо так удобнее.

Всё это делается поверх функциональности оригинального плагина.

ЗЫ QtC теперь требуется CMake >= 3.0. Для использования возможностей Server Mode, нужен CMake >= 3.7.
hatred
C++ programming qtcreator cmake CMakeProjectManager2 CMakeProjectManager2 — последние изменения

Как я уже писал (http://htrd.su/wiki/zhurnal/2011-03-24_14.49_qt_creator_i_cmake_-_prodolzhenie), вяло пилю модифицированную версию плагина CMakeProjectManager для Qt Creator'а. Там же указаны причины, вынудившие меня на это. Но разговор, не про это, а про то, что с момента прошлого поста было сделано.

Итак:

Для каждого профиля сборки сохраняются введённые параметры для CMake, так что, выбрав в следующий раз «Run CMake» не нужно вспоминать, с какими параметрами вы его запускали и легче управлять профилями сборки. Вкупе с последней фичей из апстрима: сохранения глобальной истории параметров для CMake, получается достаточно мощный механизм.
Используя вышеприведённую информацию, появилась возможность при модификации дерева исходников (добавление, удаление, переименование) в фоновом режиме запускать обновление CBP файла и дерева сборки, что особо актуально при использовании глоббинга.
По сравнению с первым вариантом, получилось значительно сократить расходование памяти при использовании плагина, особенно когда в дереве проекта много вспомогательных модулей, временного C/C++ кода.
Кодовая база периодически синхронизируется с GIT версией Qt Creator. Если кто-то будет делать клоны для стабильных релизов, просьба отписываться с информацией об оных.

HINT:
Так как, при добавлении, удалении или переименовывании файла, не осуществляется модификация CMakeLists.txt, то нужно вносить изменения самому, либо использовать globbing:

# UTILS
file(GLOB_RECURSE UTIL_SOURCES "../util/*.cpp")
file(GLOB_RECURSE UTIL_HEADERS "../util/.h" "../util/.hpp")
На полноценный парсер пока времени нет (хотя уже адоптирован на чистый C++/Qt оный из KDevelop), к тому же, в списке рассылки Qt Creator проскакивала новость, что одна команда разрабатывает полноценный плагин (тыц — digipedia.pl Зная это, не хочется делать бесполезную работу, при том, что текущий функционал уже вполне удовлетворяет.

Src: htrd.su
hatred
programming plugin qtcreator cmake CMakeProjectManager2 Qt Creator и CMake — продолжение
Некоторое время я поднимал тему связки Qt Creator и CMake, тогда всё показалось не очень хорошо.
В общем, собрался и сделал несколько лучше: малость допилил плагин CMakeProjectManager, реализовав следующие фичи...
Читать: hatred.homelinux.net
hatred
programming patch qtcreator cmake Qt Creator и CMake:
Пакость: Qt Creator умеет импортировать CMake проекты, проблема в том, что в дереве далеко не все файлы отображаются.
Причина: делается этот импорт через откровенную задницу: вызывает cmake с генератором »-G'CodeBlocks — Unix Makefiles'», генерируя тем самым XML-файл проекта формата CodeBlocks. Но тут накладывается вторая задница: сам генератор обрабатывает файлы только для таргетов: executable, static_library, shared_library, module_library, всё остальное он забывает запихнуть в результирующий '.cbp'.
Решение: hatred.homelinux.net

ЗЫ более прямое есть?