⇤ ← Версия 1 от 2020-09-27 22:30:35
1743
Комментарий:
|
4582
|
Удаления помечены так. | Добавления помечены так. |
Строка 11: | Строка 11: |
* (''вы издеваетесь'') | * ''вы издеваетесь?'' |
Строка 19: | Строка 19: |
* (!) пример | |
Строка 25: | Строка 26: |
Проблемы многофайловой сборки: вручную мутороно, сценарий делает много лишнего 1. Перекомпиляция только обновлённых исходников * Параметры этой компиляции 1. Удаление генератов * В том числе того, что ''разработчик'' считает генератом 1. Скриптование приёмов сборки * в т. ч. уникальных для проекта Make: * Цели и рецепты * Как правило «как создать файл из других файлов» (например, `prog.o` из `prog.c`) * Вариант: «как создать файл ''определённого типа'' из других файлов ''другого определённого типа''» (например `.o` из `.c` * Переменные * Специальные переменные * Командный интерпретатор ОС в качестве языка сценариев (как правило, shelll) * ⇒ нужен shell под системы без shell |
|
Строка 26: | Строка 44: |
=== Литература по GNU Make === * [[https://www.oreilly.com/library/view/managing-projects-with/0596006101/|Managing Projects with GNU Make, 3rd Edition]] * [[https://www.gnu.org/software/make/manual/make.html|Documentation]] * [[http://rus-linux.net/nlib.php?name=/MyLDP/algol/gnu_make/gnu_make_3-79_russian_manual.html|Русский перевод]] * Книга Владимира Игнатова [[https://www.opennet.ru/docs/RUS/gnumake/|Эффективное использование GNU Make]] |
|
Строка 27: | Строка 52: |
* [[WP:List_of_build_automation_software|Тысячи их]] * [[http://https://ninja-build.org|Ninja]] (в основном, для генерирования) * * [[WP:Rake_(software)]] * [[WP:Apache_Ant]] / [[WP:Apache_Maven]] / … — XML, чаще для Java |
* [[WP:List_of_build_automation_software|Тысячи их]], например, [[http://https://ninja-build.org|Ninja]] (в основном, для генерирования) * Ориентированные на ЯП и особенности сред программирования [[WP:Apache_Ant]]/[[WP:Apache_Maven]] (Java), [[https://www.haskell.org/cabal/|Cabal]] (Haskell), [[https://common-lisp.net/project/asdf/|ASDF]] (Lisp/CLisp), [[https://boostorg.github.io/build/|Boost.Build]]… ∃ Более высокий уровень — инструменты ''генерации'' сборочных сценариев (+окружение, +варианты сборки, +параметризация, +…), об этом после == Д/З == 1.#0 Прочитать и (по возможности) прощёлкать [[http://grep.cs.msu.ru/BESTA/ruprog/make.doc.txt|учебник по Make]] (про интеграцию с SCCS можно не читать). Есть ли отличия в поведении от GNU Make? 1. (для сдающих спецкурс, кто ещё не сделал этого) Зарегистрировать свой репозиторий [[https://github.com/FrBrGeorge/LinuxDev2020/issues/1|в качестве комментария здесь]] 1. '''TODO''' |
Многофайловая сборка и агенты прочной раковины
Сначала про раковину, она же secure shell.
- Ключ (повторение)
- Запароленный ключ; в чём разница с паролями на хостах?
- Агент, хранящий распароленный ключ
- Порт агента, хранящего распароленный ключ
- Проброс порта агента, хранящего распароленный ключ
- Дальнейший проброс порта агента, хранящего распароленный ключ
вы издеваетесь?
- Дальнейший проброс порта агента, хранящего распароленный ключ
- Проброс порта агента, хранящего распароленный ключ
- Порт агента, хранящего распароленный ключ
- Агент, хранящий распароленный ключ
- Запароленный ключ; в чём разница с паролями на хостах?
- Бонус: проброс других портов
Сборка из нескольких файлов
- Зачем много файлов?
- Быстрее компилировать не все
- Проще ориентироваться
- Си: пространства имён!
пример
- Скомпилировать сразу все файлы?
- (пере) компиляция только изменённых
Компиляция до .o
(повтор: сложность компоновки вручную с помощью ld)
Make
Проблемы многофайловой сборки: вручную мутороно, сценарий делает много лишнего
- Перекомпиляция только обновлённых исходников
- Параметры этой компиляции
- Удаление генератов
В том числе того, что разработчик считает генератом
- Скриптование приёмов сборки
- в т. ч. уникальных для проекта
Make:
- Цели и рецепты
Как правило «как создать файл из других файлов» (например, prog.o из prog.c)
Вариант: «как создать файл определённого типа из других файлов другого определённого типа» (например .o из .c
- Переменные
- Специальные переменные
- Командный интерпретатор ОС в качестве языка сценариев (как правило, shelll)
- ⇒ нужен shell под системы без shell
TODO
Литература по GNU Make
Книга Владимира Игнатова Эффективное использование GNU Make
Другие низкоуровневые системы сборки
Ориентированные на ЯП и особенности сред программирования Apache_Ant/Apache_Maven (Java), Cabal (Haskell), ASDF (Lisp/CLisp), Boost.Build…
∃ Более высокий уровень — инструменты генерации сборочных сценариев (+окружение, +варианты сборки, +параметризация, +…), об этом после
Д/З
Прочитать и (по возможности) прощёлкать учебник по Make (про интеграцию с SCCS можно не читать). Есть ли отличия в поведении от GNU Make?
(для сдающих спецкурс, кто ещё не сделал этого) Зарегистрировать свой репозиторий в качестве комментария здесь
TODO