Skip to content

Latest commit

 

History

History
55 lines (47 loc) · 5.35 KB

File metadata and controls

55 lines (47 loc) · 5.35 KB

Описание Makefile

Обзор

Этот 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.