Различия между версиями 1 и 2
Версия 1 от 2020-09-27 22:30:35
Размер: 1743
Редактор: FrBrGeorge
Комментарий:
Версия 2 от 2020-09-28 08:31:37
Размер: 4582
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 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.

  • Ключ (повторение)
    • Запароленный ключ; в чём разница с паролями на хостах?
      • Агент, хранящий распароленный ключ
        • Порт агента, хранящего распароленный ключ
          • Проброс порта агента, хранящего распароленный ключ
            • Дальнейший проброс порта агента, хранящего распароленный ключ
              • вы издеваетесь?

  • Бонус: проброс других портов

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

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

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

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

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

Make

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

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

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

Make:

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

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

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

TODO

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

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

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

Д/З

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

  2. (для сдающих спецкурс, кто ещё не сделал этого) Зарегистрировать свой репозиторий в качестве комментария здесь

  3. TODO

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