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

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

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

Make

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

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

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

ТАБУЛЯЦИИ!

Gnu make

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

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

Пример

См. FrBrGeorge/MakefileExample

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

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

Д/З

  1. Прочитать и прощёлкать
  2. В репозитории с Д/З сделать (вложенный) подкаталог 03_Multifile и поместить туда код из Пример применения make

    • Убедиться, что он работает. Исправить ошибки, если они есть)
    • Доделать Makefile так, чтобы

      1. Собирались две библиотеки: liboutput_static.a и liboutput.so из файлов fun.o и const.o

      2. Собиралось три бинарника: prog (из .o-фйалов), prog-a (из prog.o и liboutput_static.a) и prog-so (из prog.o и liboutput.so)

      3. Имелась цель test:, для достижения которой каждый из трёх бинарников запускается без параметров (обратите внимание на перенаправление stderr), с одним каким-нибудь параметром и с тремя параметрами (для каждого бинарника параметры одинаковые). Затем выводы соответствующих запусков сравниваются (например, с помощью cmp file1 file2)

      4. И чтобы все генераты удалялись!
  3. <!> Обратите внимание на то, что нумерация лекций поменялась, просьба переименовать каталог с предыдущим домашним заданием в отдельно коммите!

LecturesCMC/LinuxApplicationDevelopment2021/03_Multifile (последним исправлял пользователь FrBrGeorge 2021-10-07 11:16:14)