Skip to content

Home Программирование Обзор средств автосборки в Linux
Обзор средств автосборки в Linux

В предыдущей главе рассматривался простейший многофайловый проект. Для его сборки нам приходилось сначала компилировать каждый исходник, а затем компоновать полученные объектные файлы в единый бинарник.

Собирать программы вручную неудобно, поэтому программисты, как правило, прибегают к различным приемам, позволяющим автоматизировать этот процесс. Самый простой способ— написать сценарий оболочки (shell-скрипт), который будет автоматически выполнять все то, что вы обычно вводите вручную. Тогда многофайловый проект из предыдущей главы можно собрать, например, при помощи скрипта, приведенного ниже.

Скрипт make_printup

#!/bin/sh 
gcc -с print_up.c
gcc -c main.с
gcc -о printup print_up.o main.о

Любая командная оболочка является также интерпретатором собственного языка программирования. В результате ей можно передавать набор команд в виде одного файла. Подобные файлы называются скриптами (или сценариями) оболочки. Каждый такой сценарий начинается с последовательности символов #! (решетка и восклицательный знак), после которой следует (без пробела) полный путь к исполняемому файлу оболочки, под которой будет выполняться скрипт. В Linux ссылка /bin/sh обычно указывает на оболочку bash.

Теперь файлу make_printup необходимо дать права на выполнение:

$ chmod +x make_printup

Осталось только вызвать скрипт, и проект будет создан: $ ./make_printup

На первый взгляд, все прекрасно. Но настоящий программист должен предвидеть все возможные проблемы, и при детальном рассмотрении перспективы использования скрипта оболочки для сборки проекта уже не кажутся такими радужными. Перечислим некоторые проблемы.

  • Скрипты оболочки статичны. Их работа не зависит от состояния текущей задачи. Даже если нужно заново откомпилировать только один файл, скрипт будет собирать проект "с нуля".
  • В скриптах плохо просматриваются связи между различными элементами проекта.
  • Скрипты не обладают возможностью самодиагностики.
  • К счастью, Linux имеет в наличии достаточно большой арсенал специализированных средств для автоматической сборки программных проектов. Такие средства называют автосборщиками или утилитами автоматической сборки. Благодаря специализированным автосборщикам программист может сосредоточиться, собственно, на программировании, а не на процессе сборки.
  • Все утилиты автосборки в Linux можно разделить на несколько условных категорий.
  • Семейство make— это различные реализации стандартного для Unix-подобных систем автосборщика make. Из представителей данного семейства наибольшей популярностью в Linux пользуются утилиты GNU make, imake, pmake, cmake и tmake.
  • Надстройки над make — утилиты семейства make работают с особыми файлами, в которых содержится вся информация о сборке проекта. Такие файлы называют make-файлами (makefiles). При работе с классическими make-утилитами, эти файлы создаются и редактируются вручную. Надстройки над make автоматизируют процесс создания make-файлов. Наиболее популярные представители этого семейства в Linux — утилиты из пакета GNU Autotools (automake, autoconf и т. д.).
  • Специализированные автосборщики — обычно такие утилиты создаются для удобства при работе с определенными проектами. Типичный представитель этого семейства— утилита qmake (Qt make)— автосборщик для проектов, использующих библиотеку Qt компании Trolltech,

Изучить каждый из перечисленных автосборщиков в рамках данной книги не представляется возможным. Поэтому мы будем пользоваться самой популярной в Linux утилитой автосборки GNU make. Далее, говоря о make, будем подразумевать GNU make.

Комментарии (0)

RSS feed Comments

Написать комментарий

smaller | bigger

busy
 

Регистрация




Top