Этот Makefile разработан для сборки, тестирования и поддержки проекта на языке C, включающего модули print_module, documentation_module и тесты для бинарного дерева поиска (BST): bst_create, bst_insert, bst_traverse. Он оптимизирован для масштабируемости, что позволяет легко добавлять новые модули и поддерживать большие проекты с минимальными изменениями.
- Модульная система сборки: Автоматически обнаруживает
.cфайлы и генерирует объектные файлы, упрощая добавление новых модулей через списокMODULES. - Режимы сборки: Поддержка
BUILD_TYPE=debug(санитайзеры и отладочные символы) иBUILD_TYPE=release(оптимизация с-O2). - Автоматические зависимости: Генерирует файлы
.dдля учета заголовочных файлов с помощью-MMD -MP. - Тестирование и валидация: Поддерживает запуск тестов (
test), проверку утечек памяти (valgrind) и статический анализ (cppcheck). - Форматирование кода: Использует
clang-formatдля проверки (format-check) и автоматического исправления стиля кода (format-fix). - Управление
.gitignore: Автоматически добавляет артефакты сборки в.gitignore(update_gitignore) и позволяет их удалить (restore_gitignore). - Проверка инструментов: Проверяет наличие необходимых утилит (
gcc/clang,valgrind,cppcheck,clang-format) черезcheck-tools. - Параллельная сборка: Оптимизирован для выполнения с
make -j$(nproc). - Подробные комментарии: Обширные комментарии в Makefile объясняют назначение каждого раздела и команды.
Убедитесь, что установлены следующие инструменты:
gccилиclang(компилятор)valgrind(проверка утечек памяти)cppcheck(статический анализ)clang-format(форматирование кода, конфигурация в../materials/linters/.clang-format)
make # Собрать все модули (Quest_1–Quest_5)
make BUILD_TYPE=debug # Сборка с отладкой и санитайзерами
make -j$(nproc) # Параллельная сборка с максимальным числом задач
make test # Запустить все тесты
make valgrind # Проверить утечки памяти для всех модулей
make cppcheck # Выполнить статический анализ
make format-check # Проверить стиль кода
make format-fix # Исправить стиль кода
make clean # Удалить все артефакты сборки
make rebuild # Очистить и пересобрать
make help # Показать подробную справку- Добавление модуля: Добавьте номер модуля в
MODULESи определите его объектные файлы (например,OBJS_6 = new_module.o main_new.o) в Makefile. - Смена компилятора: Используйте
make CC=clangдля компиляции сclang. - Пользовательские пути: Переопределите
BUILD_DIR,SRC_DIRилиCLANG_FORMAT_SRC(например,make BUILD_DIR=./build).
../build/— директория для объектных файлов (.o) и бинарников (Quest_X)../— исходные файлы (.c,.h) и тесты.../materials/linters/.clang-format— конфигурация стиля кода.
- Используйте
make -nдля предварительного просмотра команд (dry-run). - Для больших проектов добавляйте новые модули, расширяя переменную
MODULESи определяя их зависимости. - Убедитесь, что файл
.clang-formatдоступен, или переопределите путь черезCLANG_FORMAT_SRC.
Этот Makefile разработан для удобной работы с проектами на C любого размера. Для вопросов или предложений по улучшению создайте issue или pull request на GitHub.