Я много работаю с CMake. И периодически сталкиваюсь с довольно сложными и запутанными CMake-скриптами. Долгое время я использовал логи, чтобы разобраться в их работе и выполнить отладку. Позже обнаружил, что в CMake есть встроенный отладчик и профилировщик, которые сильно упрощают процесс отладки. Кажется, не все знают об их существовании и о том, как с ними работать, поэтому я решил написать эту статью.
Рубрика «build system»
Как победить CMake: отладка CMake-скриптов
2025-09-26 в 8:19, admin, рубрики: build, build system, C, c++, cmake, cmake инструкция, debug, debugger, guide, гайдСборка Android-приложения. Задачка со звёздочкой
2019-10-03 в 12:19, admin, рубрики: android, android development, bazel, buck, build system, gradle, Блог компании FunCorp, разработка мобильных приложений, Разработка под android, системы сборки
Привет! Летом я выступал на Summer Droid Meetup с докладом про сборку Android-приложения. Видеоверсию можно найти здесь: habr.com/ru/company/funcorp/blog/462825. А для тех, кто больше любит читать, я как раз и написал эту статью.
Речь пойдёт о том, что же это такое — Android-приложение. Мы соберём разными способами Hello, world!: начнём с консоли и посмотрим, что вообще происходит под капотом систем сборки, потом вернёмся немного в прошлое, вспомним про Maven и изучим современные решения Bazel и Buck. И, наконец, всё это сравним.
Читать полностью »
MAM: сборка фронтенда без боли
2019-06-16 в 15:49, admin, рубрики: $mol, build system, cyclic references, dependencies, javascript, mam, modular system, TypeScript, versioning, Разработка веб-сайтов, системы сборкиЗдравствуйте, меня зовут Дмитрий Карловский, и я… обожаю MAM. MАМ управляет Агностик Модулями, избавляя меня от львиной доли рутины.

Агностик Модуль, в отличие от традиционного, это не файл с исходником, а директория, внутри которой могут быть исходники на самых разных языках: программная логика на JS/TS, тесты к ней на TS/JS, композиция компонент на view.tree, стили на CSS, локализация в locale=*.json, картинки и тд, и тп. При желании не сложно прикрутить поддержку любого другого языка. Например, Stylus для написания стилей, или HTML для описания шаблонов.
Зависимости между модулями трекаются автоматически путём анализа исходников. Если модуль включается, то включается целиком — каждый исходник модуля транспилируется и попадает в соответствующий бандл: скрипты — отдельно, стили — отдельно, тесты — отдельно. Для разных платформ — свои бандлы: для ноды — свои, для браузера — свои.
Полная автоматизация, отсутствие конфигурирования и бойлерплейта, минимальные размеры бандлов, автоматическое выкачивание зависимостей, разработка сотен отчуждаемых библиотек и приложений в одной кодовой базе без боли и страданий. Ух какая наркомания! Уберите от мониторов беременных, слабонервных, детей и добро пожаловать на подводную лодку!
В чем набрать и чем собрать C++ проект
2019-03-05 в 13:23, admin, рубрики: ant, build system, c++, cmake, eclipse, google test, gradle, IDE, kdevelop, make, netbeans, qt, QtCreator, scons, Разработка под LinuxЗадавшись этим вопросом я, в первую очередь, сформулировал требования: жесткие и опциональные (но желательные) для системы сборки и графической среды разработки.
Сразу хочу отметить что речь идет о написании C++ кода не под какую-то специфичную платформу типа Android или фреймворка, например Qt, — где все уже готово, как с построением так и с редактированием кода, а об generic коде не привязанному к конкретной платформе или фреймворку.
Читать полностью »
Multi-release JARs — Плохо или хорошо?
2018-11-06 в 7:33, admin, рубрики: build system, gradle, jar, java, java9, Блог компании Haulmont
От переводчика: мы активно работаем над переводом платформы на рельсы Java 11 и думаем над тем, как эффективно разрабатывать Java библиотеки (такие как YARG) с учётом особенностей Java 8 / 11 так, чтобы не пришлось делать отдельные ветки и релизы. Одно из возможных решений — multi-release JAR, но и тут не всё гладко.
Java 9 включает новую опцию Java-рантайма под названием multi-release JARs. Это, возможно, одно из самых противоречивых нововведений в платформе. TL;DR: мы считаем это кривым решением серьезной проблемы. В этом посте мы объясним, почему мы так думаем, а также расскажем, как вам собрать такой JAR, если вам сильно хочется.
Multi-release JARs, или MR JARs, — это новая функция платформы Java, появившаяся в JDK 9. Здесь мы подробно расскажем о значительных рисках, связанных с использованием этой технологии, и о том, как можно создавать multi-release JARs с помощью Gradle, если вы ещё хотите.
По сути, multi-release JAR — это Java-архив, включающий несколько вариантов одного класса для работы с разными версиями среды исполнения. Например, если вы работаете в JDK 8, среда Java будет использовать версию класса для JDK 8, а если в Java 9, используется версия для Java 9. Аналогично, если версия создана для будущего выпуска Java 10, рантайм использует эту версию вместо версии для Java 9 или версии по умолчанию (Java 8).
Под катом разбираемся в устройстве нового формата JAR и выясняем нужно ли это всё.
$mol: reactive micromodular ui-framework
2016-10-31 в 5:10, admin, рубрики: $mol, angular.js, asynchronous, becycle, bem, benchmarks, build system, compositing, crossplatform, css, dependency, error proof, exception handling, FRP, inheritance, javascript, lazy execution, lazy initialization, lazy load, life cycle, localization, logging, mam, modules, namespaces, node.js, oorp, parallelism, polymer.js, postcss, proxy, react.js, reactive programming, reverse engineering, sourcemap, synchronization, TypeScript, vanilla.js, view.tree, Разработка веб-сайтов, разработка мобильных приложенийСколько нужно времени, чтобы просто вывести на экран большой список, используя современные фреймворки?
| Список на 2000 строк | ReactJS | AngularJS | Raw HTML | SAPUI5 | $mol |
|---|---|---|---|---|---|
| Появление списка | 170 ms | 420 ms | 260 ms | 1200 ms | 50 ms |
| Обновление всех его данных | 75 ms | 75 ms | 260 ms | 1200 ms | 10 ms |
Напишем нехитрое приложение — личный список задач. Какие у него будут характеристики?
| ToDoMVC | ReactJS | AngularJS | PolymerJS | VanillaJS | $mol |
|---|---|---|---|---|---|
| Размер ( html + js + css + templates ) * gzip | 322 KB | 326 KB | 56 KB | 20 KB | 23 KB |
| Время загрузки | 1.4 s | 1.5 s | 1.0 s | 1.7 s | 0.7 s |
| Время создания и удаления 100 задач | 1.3 s | 1.7 s | 1.4 s | 1.6 s | 0.5s |
Небольшая головоломка: перед вами синхронный код, загружающий и обрабатывающий содержимое 4 файлов, но с сервера они грузятся параллельно. Как такое может быть?

А теперь прошу за мной в кроличью нору, настало время удивительных историй...
Приложение на Elm за считанные секунды
2016-09-19 в 21:12, admin, рубрики: build system, cli, elm, functional programming, javascript, webpack, функциональное программированиеСовременная разработка браузерных приложений стала слишком сложной. Не столько благодаря настоящей алгоритмической сложности, сколько благодаря изобилию подходов для этой самой разработки.
Наличие большого выбора — хорошо, но не всегда помогает продуктивности. Разработчики ценны, в первую очередь, умением писать полезный для бизнеса код. Проблема в том, что код — это лишь часть приложения. Коду сопутствует инфраструктура множества других инструментов, помогающих разработчику производить этот код.
Как объять необъятное: система сборки .NET Micro Framework Часть 2
2016-07-04 в 7:50, admin, рубрики: .net, .net micro framework, build system, microsoft, open source, Интернет вещей, Программирование
Продолжаем цикл статей, посвященных системе сборки .Net Micro Framework. Понятие "Система сборки проектов" всегда появляется в проектах, масштаб и сложность которых перерастает стандартные типы, имеющиеся в составе IDE. А если подразумевается, что проект будет создаваться в нескольких средах или вообще не привязан к какой бы то ни было среде разработки, то без системы сборки проекта обойтись будет просто невозможно. Ярким примером таких проектов является .Net Micro Framework — реализация платформы Microsoft .NET для микроконтроллеров.
В прошлой статье был обзор его системы сборки и особенностей ее реализации. Прежде чем двигаться дальше и изучать составные части дистрибутива, нужно познакомиться с инструментами, позволяющими это сделать. В этой статье будет сделан обзор программы PKStudio, которая позволяет удобно исследовать компоненты и связи внутри дистрибутива .Net Micro Framework, а также обладает другими интересными возможностями.
Как объять необъятное: система сборки .NET Micro Framework Часть 1
2016-04-11 в 6:16, admin, рубрики: .net, .net micro framework, build system, microsoft, open source, Программирование 
Большинство разработчиков давно привыкли использовать ту или иную IDE и не задумываются о том, как их исходный код превращается в исполняемый модуль. Современные средства разработки содержат UI и автоматизацию сборки для огромного числа типов проектов на все случаи жизни. И это очень здорово, так как позволят не задумываться над вещами, не имеющими непосредственного отношения к решаемой задаче. Но иногда задача бывает настолько сложной, что уже не получается использовать стандартные типы проектов. И тут появляется "Система сборки проектов".
Ярким примером такого типа проектов является .NET Micro Framework — реализация платформы Microsoft .NET для микроконтроллеров. В этой статье будет сделан обзор его системы сборки и особенности ее реализации.
