Различия между версиями 6 и 7
Версия 6 от 2020-10-05 12:28:22
Размер: 4600
Редактор: FrBrGeorge
Комментарий:
Версия 7 от 2020-10-05 16:01:47
Размер: 4678
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 55: Строка 55:
== Пример ==
См. [[FrBrGeorge/MakefileExample]]
Строка 56: Строка 58:
== Другие низкоуровневые системы сборки == == (не успели) Другие низкоуровневые системы сборки ==

Многофайловая сборка

Сначала про настройку окружения

  • .dircolors; grep; man; PS1

  • vim: цветовые схемы, *~-файлы, vimbackup

  • zsh/bash: раскраска командной строки, алиасы

  • велосипедный парк
  • ???

Сборка из нескольких файлов

  • Зачем много файлов?
    • Быстрее компилировать не все
    • Проще ориентироваться
    • Си: пространства имён!
    • (!) пример

  • Скомпилировать сразу все файлы?
  • (пере)компиляция только изменённых
    1. Компиляция до .o

    2. Компоновка

      • (повтор: сложность компоновки вручную с помощью ld)

Make

Проблемы многофайловой сборки: вручную муторно, сценарий делает много лишнего

  1. Перекомпиляция только обновлённых исходников
    • Построение графа зависимостей и подграфа пересборки
  2. Удаление генератов
    • В том числе того, что разработчик считает генератом

  3. Скриптование / code reuse приёмов сборки
    • в т. ч. уникальных для проекта

ТАБУЛЯЦИИ!

Gnu make

(есть много, но этот популярнее всех остальных, вместе взатых)

  • Цели и рецепты
    • Как правило «как создать файл из других файлов» (например, prog.o из prog.c)

    • Вариант: «как создать файл определённого типа из других файлов другого определённого типа» (например .o из .c

  • Командный интерпретатор ОС в качестве языка сценариев (как правило, shell)
    • ⇒ нужен shell под системы без shell
  • Переменные
    • Специальные переменные
    • Подстановка
    • Отложенное и немедленное присваивание
  • Много правил по умолчанию
  • … (что успеем)

Литература по GNU Make

Пример

См. FrBrGeorge/MakefileExample

(не успели) Другие низкоуровневые системы сборки

∃ Более высокий уровень — инструменты генерации сборочных сценариев (+окружение, +варианты сборки, +параметризация, +…), об этом после

Д/З

  1. Прочитать и (по возможности) прощёлкать учебник по Make (про интеграцию с SCCS можно не читать). Есть ли отличия в поведении от GNU Make?

  2. TODO Д/З на Makefile и многофайловый проект

LecturesCMC/LinuxApplicationDevelopment2020/04_Multifile (последним исправлял пользователь FrBrGeorge 2020-10-05 19:45:19)