ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



Make: утилита сопровождения программ
                           7.1. Общие сведения.
               
               
               Использование   утилиты  сопровождения  программ  MAKE
         позволяет автоматизировать процесс разработки и эксплуатации
         программ на ассемблере и языках высокого уровня. После того,
         как были внесены изменения в исходный файл,  при помощи MAKE
         могут  быть  выполнены  действия, необходимые по отображению
         этих изменений в выходных файлах.
               В отличие от других программ пакетной обработки,  MAKE
         сравнивает  даты  последних модификаций выходных   (целевых)
         файлов с датами  последних модификаций исходных  (требуемых)
         файлов.  MAKE  выполняет  поставленную  задачу,  только если
         целевой  файл старше.  Это может  сэкономить  много времени,
         например,  при  разработке  программ, содержащихся во многих
         исходных файлах или требующих нескольких шагов компиляции.
               
               
               
               
               
               
               
               
                    7.2. Запуск и особенности работы MAKE.
               
               
               
               Перед запуском MAKE  должен  быть  создан  специальный
         файл  описаний MAKE, содержимое которого задает поставленную
         задачу и определяет требуемые для ее выполнения файлы. 
               Файл  описаний  состоит  из  одного   или   нескольких
         описаний цели/источника. Каждое описание задается в виде:
               
         <имя исходного файла> : <имена требуемых файлов>
               <команда>
                  ...
               
               Предполагается, что указанный исходный файл может быть
         преобразован,  для  чего   могут   понадобиться   файлы   со
         специфицированными после : именами. 

                                     - 65 -
         
         
               Имена  файлов  при  необходимости  могут быть снабжены
         спецификациями путей поиска в подоглавлениях.
               <Команда>  рассматривается  как  имя   исполнительного
         файла или команда MS-DOS. 
               Может  быть  задано  любое  число требуемых файлов, но
         только  один  исходный  (целевой).  Имена  требуемых  файлов
         должны  разделяться  хотя  бы  одним  пробелом.  Если они не
         помещаются  на  одной  строке,  может  быть   специфицирован
         признак продолжения - символ  \ .
               Может  быть  задано  любое число команд DOS и/или имен
         исполнительных файлов, но  каждая  команда  или  имя  должны
         располагаться на отдельной строке и начинаться с символа TAB
         или хотя бы одного пробела. Команды  или  файлы  выполняются
         лишь в том случае, если хотя бы один из требуемых файлов был
         модифицирован после создания или модификации целевого,  т.е.
         должно выполняться одно из двух условий:
               - целевой файл старше требуемого;
               - целевой файл не существует.
               Может быть задано любое число описаний цели/источника.
         Последняя  строка  предыдущего описания должна отделяться от
         первой строки следующего описания  хотя  бы  одной  строкой,
         содержащей все пробелы.
               При  появлении  символа  #  остаток  строки  считается
         комментарием. В области команд  символ  #  может  находиться
         только в 1-й позиции строки. 
               Следует   помнить,  что  порядок  следования  описаний
         крайне важен, т.к. в процессе их  отработки  могут  меняться
         даты модификаций файлов, что оказывает влияние на дальнейшую
         работу MAKE. 
               Запуск MAKE осуществляется введением командной  строки
         следуюшего вида:
               
         MAKE [<опции>][<макроопределения>]<имя файла описаний>
               
               Опции  и  макроопределения MAKE описаны в пп.7.3 и 7.4
         соответственно. 
               Имя файла описаний MAKE обычно не имеет  расширения  и
         совпадает   с  базовыми  именами  используемых  в  описаниях
         файлов, но это не является обязательным.
               Если MAKE  обнаруживает,  что  очередное  описание  по
         каким-либо причинам не может быть отработано, осуществляется
         переход к следующему описанию. 
               Если в процессе работы выяснится, что целевой файл  не
         существует,  MAKE  продолжает  работу,  т.к. этот файл может
         быть создан последующими командами. Если  же  не  существует
         требуемый  или  командный  файл  или  возникает  ошибка  при
         выполнении  команды,  MAKE  прекращает  свою  работу,  а  на
         консоль выдается поясняющее сообщение.
               
               
               
               
               
               
               

                                     - 66 -
         
         
                           7.3. Опции MAKE. 
               
               
               Каждая  опция  MAKE  в  командной  строке запуска MAKE
         обозначается предшествующим символом  / .
               Описание опций MAKE приведено ниже:
               
               /D  - Выдавать на консоль  даты  последних  модификаций
                     каждого сканируемого файла.
                     
               /I  - Игнорировать   коды  возврата  после  вызываемых
                     программ. 
                     
               /N  - Выдавать на консоль команды, выполнение  которых
                     не осуществляется.
                     
               /S  - Не выдавать на консоль сообщений.
                     
                     
                     
                     
               
                     
                     
                            7.4. Макроопределения.
                     
               
               Использование   макроопределений   позволяет  отложить
         определение  компонент  описания  работы  MAKE  до   момента
         запуска. Они могут располагаться как в файле описаний, так и
         в командной строке.
               Существуют две формы макроопределений:
               
         <имя>=<значение>
               или
         $(<имя>)
               
               Первая  форма задает значение символичекому параметру,
         который  может  использоваться  для  определения   компонент
         описания.  Допустимо  любое  число  пробелов между элементом
         <имя> и  символом  =  и  между  этим  символом  и  элементом
         <значение>, которые игнорируются. Пробелы, специфицированные
         после  <значение>,  рассматриваются  как   часть   значения.
         Пробелы   как  часть  значения  в  командной  строке  должны
         заключаться в двойные апострофы  " . 
               В файле описаний MAKE каждое  макроопределение  должно
         занимать отдельную строку. 
               Одно  и  то  же имя может быть определено в нескольких
         местах.  Подстановка  значений осуществляется в соответствии
         со следующим списком (в порядке убывания приоритетов):
               1. Из командой строки.
               2. Из файла описаний MAKE.
               3. Из текущего  окружения  (например,  ключевые  слова
         DOS).
               

                                     - 67 -
         
         
               Вторая  форма  макроопределений  использует  значение,
         определенное в другом  месте.  Элемент  <имя>  приводится  к
         изображению на регистре заглавных букв.
               
               Допускается    вложенность   макроопределений,   когда
         внутреннее макроопределение определяется через внешнее.  При
         этом следует избегать рекурсии. 
               Пример рекурсивной вложенности макроопределений:
               A=$(B)
               B=$(A)
               
               Существуют   3   специальные  макропеременные, имеющие
         следующие фиксированные значения:
               $*   - часть имени (без расширения) целевого файла;
               $@   - полное имя целевого файла;
               $**  - полный список требуемых файлов.
               Эти  макропеременные   не   требуют   предварительного
         описания и могут использоваться в файле описаний MAKE.
               
               
               
               
               
                          7.5. Правила вывода.

               
               MAKE  обеспечивает  возможность задания правил вывода,
         которые  помогают  правильно  интерпретировать   неполностью
         определенные конструкции.
               Правила  вывода могут находиться в файле описаний MAKE
         или в специальном файле с именем TOOLS.INI,  поиск  которого
         осуществляется   на   активном   драйве   в  подоглавлениях,
         определенных командой DOS PATH. В файле  TOOLS.INI  правилам
         вывода   должна  предшествовать  строка,  первыми  символами
         которой являются:
         [make]
               Поиск  правила  вывода  осуществляется   в   следующей
         последовательности:
               1. В файле описаний MAKE.
               2. В файле TOOLS.INI.
               
               Правила вывода задаются в виде:
         .<расширение требуемого файла>.<расширение целевого файла>:
               <команда>
               <команда>
                  ...
               
               Пример: содержимое файла описаний MAKE:
         .asm.obj:
               MASM $*.asm,,,;
         test1.obj: test1.asm
         test2.obj: test2.asm
               MASM test2.asm;
               
               Правило  вывода занимает первые 2 строки. Прочитав 3-ю

                                     - 68 -
         
         
         строку, MAKE  обнаруживает, что  описание неполно,  т.к. 4-я
         строка  является  уже  началом  следующего  описания.  Поиск
         нужного правила  вывода  ведется  по  совпадению  расширений
         файлов  строки  3  с  указанными  в правиле. После отыскания
         правила  MAKE,  обработав   макропеременную   $*,  выполняет
         командную строку:
               MASM test1.asm,,;
               4-я   и   5-я  строки  преставляют  собой  законченное
         описание,  и  для  его  интерпретации  использования  правил
         вывода не требуется.


© KOAP Open Portal 2000