169
разбивался на два этапа: превращение исходных текстов в объектные модули и
сборка этих объектных модулей в загрузочный модуль. Далее, если производить
компиляцию выборочно, то есть если не компилировать все исходные тексты
подряд, а компилировать только те, которые претерпели изменения, можно
получить существенную экономию времени сборки всего проекта.
Для того,
чтобы прочувствовать необходимость такой выборочной
компиляции сейчас, пожалуй необходимо скомпилировать что-то действительно
большое. К примеру, ядро операционной системы Linux, или собрать из
исходных текстов Open Office. Правда, помня о такой маркетинговой уловке
производителей железа как закон Мура, я полагаю, с неуклонным ростом
вычислительных ресурсов этот пример станет не очень удачным уже
достаточно скоро
.
Зачем же нам тогда make, спросите вы? Ведь большинство проектов для
встроенных систем весьма аскетичны, а скомпилировать три десятка модулей
на C или C++ современный компьютер может за считанные секунды?
Ответ очень прост: make достаточно мощный, специализированный
инструмент для работы с проектами.
Со специализацией инструментов я столкнулся в полной мере, когда
попробовал использовать язык Perl
для обработки текстов вместо обычного на
тот момент для меня C++. Результат меня тогда поразил. За три дня на язке Perl
был выполнен объем работы, которые потребовал от меня две недели на C++!
Это при том, что C++ я уже использовал давно, а Perl видел в первый раз в
жизни. Perl специально создавали как средство для обработки
текстов. C++ не
помогла библиотека STL, хотя вроде как набор механизмов у инструментов был
примерно одинаковый. Разве что в C++ у меня не использовались библиотеки
для разбора регулярных выражений.
В чём же оказалась сила Perl? В первую очередь – в простоте. Краткая
синтакическая конструкция, вызывающая у новичка головную боль и мысли о
распечатке дампа памяти,
делает то, что на C++ потребует написания полутора
десятков строк текста. Нам известно, что уровень языка не влияет на
количество ошибок. Влияние оказывает количество строк, то есть чем больше
строк, тем больше ошибок и наоборот. В программе на Perl строк было мало и я
продвигался к завершению проекта быстрыми темпами.
Итак, вернемся к
make. Основная цель утилиты – сократить время,
необходимое для описания того, что надо сделать с проектом. Предполагается
при этом, что вы работаете с проектом самостоятельно, без каких либо IDE.
Что нужно делать с проектом во время сборки?
z Убрать старые и ненужные файлы, объектные модули, всякий мусор,
исполняемые файлы и т.д. Это полезно делать перед архивацией проекта
или перед отдачей проекта системе контроля версий.
z Запаковать проект в архив, пр этом желательно переписать его в пару-
тройку мест, а чтобы не запутаться – назвать архив так-же, как называется
проект.