237
Ответ очень прост:
make достаточно мощный,
специализированный
инструмент для работы с проектами.
Со специализацией инструментов я столкнулся в полной мере, когда
попробовал использовать язык Perl для обработки текстов вместо обычного на
тот момент для меня C++. Результат меня тогда поразил. За три дня на язке Perl
был выполнен объем работы, которые потребовал от меня две недели на C++!
Это при том, что C++ я уже использовал давно, а Perl видел в первый раз в
жизни. Perl специально создавали как средство для обработки текстов. C++ не
помогла библиотека STL, хотя вроде как набор механизмов у инструментов был
примерно одинаковый. Разве что в C++ у меня не использовались библиотеки
для разбора регулярных выражений.
В чём же оказалась сила Perl? В первую очередь – в простоте. Краткая
синтакическая конструкция, вызывающая у новичка головную боль и мысли о
распечатке дампа памяти, делает то, что на C++ потребует написания полутора
десятков строк текста. Нам известно, что уровень языка не влияет на
количество ошибок. Влияние оказывает количество строк, то есть чем больше
строк, тем больше ошибок и наоборот. В программе на Perl строк было мало и я
продвигался к завершению проекта быстрыми темпами.
Итак, вернемся к make. Основная цель утилиты – сократить время,
необходимое для описания того, что надо сделать с проектом. Предполагается
при этом, что вы работаете с проектом самостоятельно, без каких либо IDE.
Что нужно делать с проектом во время сборки?
• Убрать старые и ненужные файлы, объектные модули, всякий мусор,
исполняемые файлы и т.д. Это полезно делать перед архивацией
проекта или перед отдачей проекта системе контроля версий.
• Запаковать проект в архив, при этом желательно переписать его в пару-
тройку мест, а чтобы не запутаться – назвать архив так же, как
называется проект.
• Скомпилировать исходные тексты.
• Собрать загрузочный модуль.
• Вызвать необходимые конвертеры для получения формата,
удобоваримого для доставки в контроллер.
• Вызвать программу для доставки загрузочного модуля в контроллер.
Ко всему этому хочется добавить, что проектов у вас много, а вы один.
Большинство описанных выше действий вполне себе стандартно и хочется
вынести их за скобки. Утилита make позволяет описать параметры сборки
проекта в виде переменных, а из этих переменных задать последовательность
действий. Получается, что переменные от проекта к проекту практически не
меняются, а вот их содержимое может изменяться.
Что мы можем указать в виде таких переменных? Попробуем привести
список.
238
• Имя проекта. Это имя можно использовать как имя архива, а также как
имя исполняемого или загрузочного модуля.
• Дополнительные части для имени проекта, такие как дата и время
компиляции, порядковый номер сборки, тип проекта.
• Имя компилятора. В области встроенных систем считается вполне
нормальным частый переход на разные микроконтроллеры и,
соответственно, использование разных компиляторов раз в несколько
месяцев.
• Опции компилятора. Флаги оптимизации, специфические опции,
местоположение заголовочных файлов и т.п.
• Опции линкера. Наименование библиотек, адреса памяти программ и
кода и т.д.
• Архиватор и ключи для архивации.
• Имя программы и ее ключи для доставки ПО в контроллер.
• Список этот далеко не полный, его можно продолжать.
Достарыңызбен бөлісу: