4218
Комментарий:
|
4419
|
Удаления помечены так. | Добавления помечены так. |
Строка 18: | Строка 18: |
* (пере) компиляция только изменённых | * (пере)компиляция только изменённых |
Строка 23: | Строка 23: |
Проблемы многофайловой сборки: вручную мутороно, сценарий делает много лишнего | Проблемы многофайловой сборки: вручную муторно, сценарий делает много лишнего |
Строка 25: | Строка 25: |
* Параметры этой компиляции | * Построение графа зависимостей и подграфа пересборки |
Строка 28: | Строка 28: |
1. Скриптование приёмов сборки | 1. Скриптование / code reuse приёмов сборки |
Строка 31: | Строка 31: |
Make: | {{{#!wiki caution ТАБУЛЯЦИИ! }}} === Gnu make === (есть много, но этот популярнее всех остальных, вместе взатых) |
Строка 35: | Строка 39: |
* Командный интерпретатор ОС в качестве языка сценариев (как правило, shell) * ⇒ нужен shell под системы без shell |
|
Строка 37: | Строка 43: |
* Командный интерпретатор ОС в качестве языка сценариев (как правило, shelll) * ⇒ нужен shell под системы без shell |
* Подстановка * Отложенное и немедленное присваивание * Много правил по умолчанию * … (что успеем) |
Строка 40: | Строка 48: |
'''TODO''' | |
Строка 55: | Строка 62: |
1. (для сдающих спецкурс, кто ещё не сделал этого) Зарегистрировать свой репозиторий [[https://github.com/FrBrGeorge/LinuxDev2020/issues/1|в качестве комментария здесь]] 1. '''TODO''' |
1. '''TODO''' Д/З на Makefile и многофайловый проект |
Многофайловая сборка
Сначала про настройку окружения
.dircolors; grep; man; PS1
vim: цветовые схемы, *~-файлы, vimbackup
zsh/bash: раскраска командной строки, алиасы
- велосипедный парк
- ???
Сборка из нескольких файлов
- Зачем много файлов?
- Быстрее компилировать не все
- Проще ориентироваться
- Си: пространства имён!
пример
- Скомпилировать сразу все файлы?
- (пере)компиляция только изменённых
Компиляция до .o
(повтор: сложность компоновки вручную с помощью ld)
Make
Проблемы многофайловой сборки: вручную муторно, сценарий делает много лишнего
- Перекомпиляция только обновлённых исходников
- Построение графа зависимостей и подграфа пересборки
- Удаление генератов
В том числе того, что разработчик считает генератом
- Скриптование / code reuse приёмов сборки
- в т. ч. уникальных для проекта
ТАБУЛЯЦИИ!
Gnu make
(есть много, но этот популярнее всех остальных, вместе взатых)
- Цели и рецепты
Как правило «как создать файл из других файлов» (например, prog.o из prog.c)
Вариант: «как создать файл определённого типа из других файлов другого определённого типа» (например .o из .c
- Командный интерпретатор ОС в качестве языка сценариев (как правило, shell)
- ⇒ нужен shell под системы без shell
- Переменные
- Специальные переменные
- Подстановка
- Отложенное и немедленное присваивание
- Много правил по умолчанию
- … (что успеем)
Литература по GNU Make
Книга Владимира Игнатова Эффективное использование GNU Make
Другие низкоуровневые системы сборки
Ориентированные на ЯП и особенности сред программирования Apache_Ant/Apache_Maven (Java), Cabal (Haskell), ASDF (Lisp/CLisp), Boost.Build…
∃ Более высокий уровень — инструменты генерации сборочных сценариев (+окружение, +варианты сборки, +параметризация, +…), об этом после
Д/З
Прочитать и (по возможности) прощёлкать учебник по Make (про интеграцию с SCCS можно не читать). Есть ли отличия в поведении от GNU Make?
TODO Д/З на Makefile и многофайловый проект