Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методы / Куликова Н.В., Петровская Е.Н. (ч.1,2)

.pdf
Скачиваний:
58
Добавлен:
11.06.2015
Размер:
2.62 Mб
Скачать

РАЗДЕЛ 4. РЕЖИМЫ КОМПИЛЯЦИИ И КОМПОНОВКИ ПРОГРАММ В ИНТЕГРИРОВАННОЙ СРЕДЕ BORLAND C++ (IDE)

Интегрированная среда Borland C++ (IDE) соединяет в себе менеджер проекта, редактор, компилятор языка C/C++, библиотекарь, редактор связей, интегрированный отладчик и др. Используя IDE, можно создавать библиотеки и прикладные про-

граммы для DOS, 16-бит- WINDOWS, WIN32S, WINDOWS NT.

1. Трансляторы

Транслятор это любая программа, которая преобразует один тип файла в другой. Трансляторы делятся на компиляторы и интерпретаторы.

Компиляторы генерируют непосредственно программу в машинных кодах. Существуют три основных шага в процессе компиляции: логический анализ, синтаксический анализ, генерация кода.

Интерпретатор также обрабатывает исходную программу. Отличие состоит в том, что интерпретатор непосредственно исполняет некоторое представление исходной программы, а не транслирует его в машинные коды. Интерпретатор проводит лексический, синтаксический анализы и транслирует исходную программу в свое внутреннее представление (анализ и исполнение программы проводятся последовательно по операторам).

Трансляция исходной программы в некоторое представление проще и быстрее, чем компиляция в машинные коды, но выполнение этого представления осуществляется гораздо медленнее.

Администратор проекта (для C++ 4.0 и выше) позволяет определить собственные трансляторы. Эти добавляемые трансляторы остаются в файле проекта и не добавляются как перманентные части IDE. Однако трансляторы, средства просмотра, другие инструментальные средства и Style Sheet можно передать другому проекту следующий выбираемый с помощью команды Project New project проект их наследует. С помощью Options Tools можно просмотреть заданные по умолчанию трансляторы.

71

Задание транслятора

1.Выбрать Options Tools. Выводится диалоговое окно со списком Tools, Viewers и Translators. Можно также задать трансляторы выбором команды Build Attributes в Speed Menu администратора проекта.

2.Щелкнуть мышью на New.

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

4.Набрать текст меню. Этот текст может выводиться в оперативных меню Speed Menu и в основном меню Tools. Если есть желание присвоить тексту меню оперативную клавишу, то перед буквой необходимо указать &.

5.Есть возможность набрать справочный текст. Этот текст будет выводиться в строке состояния при выборе элемента меню.

6.Щелкнуть мышью на Advanced. Выведется окно Tool Advanced Options.

7.Щелкнуть мышью на Translator.

8.Чтобы транслятор выводился в основном меню Tools, отметить Place on Tools menu. Чтобы транслятор выводился при щелчке правой кнопкой мыши на соответствующем узле, вы-

брать Place on Speed Menu.

9.Чтобы транслятор работал с целями, выбрать Target transpator. Узел становится целевым, а транслируемый файл сохраняется в каталоге Final (в противном случае он записывается

вкаталог Intermediate).

10.В Translate from набрать расширения имен файлов, которые необходимо связать с транслятором, разделив их точкой с запятой.

11.В Translate to набрать расширение результирующего (транслированного) файла.

12.Чтобы новый транслятор использовался для типа узла по умолчанию, необходимо набрать в поле Default for расширение файла и двоеточие.

13.Выбрать OK.

72

Задание средств просмотра и инструментальных средств

Средства просмотра позволяют просматривать содержимое выбранного узла. Заданным по умолчанию редактором для Text Edit является редактор IDE. Чтобы просмотреть узел, необходимо дважды щелкнуть в окне проекта мышью или щелкнуть правой кнопкой мыши и выбрать View. Выведется список доступных средств просмотра.

Для разных типов узлов доступны разные средства просмотра. Инструментальные средства Tools это приложения, которые можно выполнять из IDE. Задать средства просмотра и инструментальные средства можно аналогично тому, как задаются трансляторы.

Основные средства работы с командной строкой компи-

ляторы, редакторы связей и библиотеки.

ВСС.EХЕ 16-битовый компилятор, транслирующий файлы С++ в объектные модули для целевой среды DOS или 16-бит- WINDOWS.

TLINK.EXE 16-битовый редактор связи (компоновщик), создающий приложения для DOS и приложения или динамические библиотеки (DLL) для 16-бит-WINDOWS. Обычно TLINK.EXE вызывается автоматически из BCC.EXE.

TLIB.EXE библиотекарь, создающий и поддерживающий библиотеки для DOS и 16-бит-WINDOWS.

2. Компиляция

Компилировать приложения можно с помощью интегрированной среды IDE или компиляторов, работающих в режиме командной строки BCC.EXE. С помощью параметров компилятора можно управлять компиляцией.

Компиляция в интегрированной среде

Оперативное меню IDE содержит три командные кнопки компиляции, соответствующие следующим командам меню:

Project Compile (Alt+F9) компилирует исходный код в выбранном окне редактора, используя параметры компилятора, заданные в диалоговом окне Project Options; при выборе окна проекта транслируются все выделенные узлы проекта; если дочерние узлы не выбраны, то они не транслируются;

73

Project Make all (F9) транслирует в проекте все «устаревшие» узлы; если окно проекта не открыто, то все файлы в окнах редактирования строятся с помощью используемых по умолчанию трансляторов;

Project Build транслирует все узлы в проекте (начиная с первого узла проекта).

Задание параметров компилятора в IDE:

выбрать Options Project и задать в диалоговом окне параметры; эти параметры используются при компиляции, если проект не загружен; при загруженном проекте эти параметры влияют на весь проект;

параметры проекта можно задать локально; для этого используется администратор проекта.

Использование компиляторов, работающих в режиме командной строки

Компиляторы BCC можно использовать для передачи файлов TLINK или TASM. Общий синтаксис команды имеет вид:

BCC [параметр [параметр...]] имя_файла [имя_файла]

Чтобы увидеть список параметров, необходимо набрать BCC и нажать Enter. Параметры в командной строке разделяются пробелами, и перед ними указывается символ «-» или «/». Параметры командной строки переопределяют параметры, заданные в файле конфигурации.

По умолчанию BCC компилирует файлы без расширений и с расширениями .CPP. Файлы с расширениями .C или с расширениями, отличными от .CPP, .ASM, .OBJ или .LIB, компилируются как файлы С.

Некоторые параметры BCC задаются по умолчанию. Чтобы отключить эти параметры, наберите BCC_параметр. По умолчанию BCC пытается выполнить компоновку с файлом определения модуля, имя которого совпадает с именем исходного файла. Можно использовать несколько файлов определения.

ВСС –v –w –m1 LABA1.CPP

Данная команда запускает компилятор С++ с командной строкой BCC.EXE, который компилирует LABA1.CPP, создавая LABA1.OBJ. Затем компилятор автоматически вызывает компоновщик TLINK.EXE, который, комбинируя объектный модуль с

74

модулями используемых библиотек, создает исполняемый мо-

дуль LABA1.EXE.

Файлы конфигурации

Если каждый раз в командной строке используется один и тот же набор параметров, то их можно перечислить в файле конфигурации. Это обычный текстовый файл, в котором параметры разделены пробелами. По умолчанию BCC использует файл конфигурации с именем TURBOC.CFG. Параметры командной строки переопределяют параметры файлов конфигурации.

Файлы подсказки

Если в командной строке задаются множества файлов и параметров, можно поместить их в файл подсказки. Эти текстовые файлы позволяют задать более длинную команду, чем это допускает операционная система. Чтобы использовать файл подсказки, необходимо дать команду

BCC @[маршрут]файл_подсказки.rsp

В команде можно задать несколько файлов подсказки (через пробел).

Параметры компилятора

Параметры BCC воспринимаются последовательно слева направо. При этом действуют следующие правила:

если дублируется параметр, то последний параметр переопределяет предыдущий (за исключением -I и -L);

при указании в командной строке нескольких параметров -I и -L результат будет кумулятивным (компилятор выполняет поиск по всем перечисленным каталогам слева направо).

3.Инструментальные средства, работающие в режиме командной строки

Borland С++ содержит несколько инструментальных средств режима командной строки, позволяющие выполнять те же задачи, что и IDE. Это компилятор, компоновщик, компилятор ресурсов, библиотекарь, компоновщик проектов (MAKE) и другие средства. Некоторые из них описаны в файлах оперативного справочника. Эти средства могут потребоваться при работаете с редактором DOS, например, Brief.

75

Файл

Описание

BCC.EXE

16-разрядный и 32-разрядный компилятор

BCC32.EXE

 

TLINK.EXE

Компоновщики, формирующие из файлов .OBJ и

TLINK32.EXE

.LIB файлы .EXE и .DLL

IMPLIB.EXE

Помогают работать с библиотеками

TLIB.EXE

 

 

Компилирует файлы для оперативного справочни-

HC31.EXE

ка Help и создает файлы .HLP, используемые боль-

 

шинством приложений WINDOWS

BRCC.EXE

 

BRCC32.EXE

Компиляторы ресурсов

BRC.EXE

BRC32.EXE

 

RLINK.EXE

 

MAKE.EXE

Помогают обслуживать проекты и компонуют

только те файлы, которые были изменены после

MAKER.EXE

 

последней генерации программы

4. Утилита MAKE

Утилита MAKE фирмы Borland (MAKE для защищенного режима и MAKER для реального режима) это утилита управления проектами, работающая в режиме командной строки. Она помогает создавать выполняемую версию программы на основе самых последних версий исходных файлов. Многие программы состоят из значительного числа исходных файлов, каждый из которых, возможно, должен пропускаться через препроцессоры, ассемблеры, компиляторы и другие утилиты перед тем, как он будет объединяться с остальной частью программы. Если забудете перекомпилировать какой-либо модуль, который был модифицирован, или модуль, зависящий от какого-либо другого модифицированного исходного текста, то это может привести к разрушительным логическим ошибкам. С другой стороны, перекомпиляция всех исходных файлов лишь для того, чтобы обезопасить себя, может привести к слишком большим затратам времени.

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

76

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

Можно также воспользоваться утилитой MAKE для управления любым процессом, который связан с выбором файлов по имени и их обработкой для создания результирующего продукта. К числу некоторых широко распространенных приложений относится обработка текстов, автоматическое создание дубликатных копий, сортировка файлов по расширению имени с занесением их в другие каталоги, а такжеуничтожение временных файлов в каталогах.

Работа утилиты MAKE

Утилита MAKE создает самую последнюю версию программы, выполняя при этом следующие задачи:

считывает специальный файл (называемый файлом описания, формирующим файлом или файлом сборки), который был предварительно создан; этот файл указывает утилите MAKE, какие объектные и библиотечные файлы должны быть скомпонованы для того, чтобы создать выполняемый файл, а также какие исходные файлы и файлы заголовков должны компилироваться для создания каждого объектного файла;

проверяет время и дату создания каждого объектного файла по отношению к времени и дате создания исходного файла и файлов заголовков, от которых он зависит; если какой-либо из этих файлов является более новым, чем объектный файл, утилита MAKE считает, что он был модифицирован, и что необходимо произвести перекомпиляцию исходного файла;

вызываеткомпилятордляперекомпиляции исходногофайла;

после того, как были проверены все зависимости объектных файлов, дата и время создания каждого объектного файла проверяется по отношению к дате и времени создания выполняемого файла;

77

если какой-либо из объектных файлов оказывается более новым по сравнению с выполняемым файлом, утилита вызывает компоновщик для его перекомпоновки.

Утилита MAKE полностью полагается на дату и время, которые DOS присваивает каждому файлу. Это означает, что для нормальной работы утилиты MAKE необходимо корректно устанавливать системные дату и время.

Синтаксис вызова команды MAKE

MAKE [параметр...][результат...] ,

параметр – параметр утилиты MAKE; результат представляет собой имя результирующего файла, который должен быть создан.

Синтаксические правила вызова утилиты MAKE

1.За словом MAKE должен следовать пробел, а затем список параметров утилиты.

2.Каждый параметр утилиты MAKE должен отделяться от соседних параметров пробелом. Параметры могут располагаться

влюбой последовательности; может быть введено произвольное число этих параметров (ограничением является длина командной строки). Все параметры, которые не задают строку (-s или - a), могут завершаться необязательным символом «-» или «+». При помощи этих символов указывается выключение (-) или включение (+) данного параметра.

3.За списком параметров утилиты MAKE следует пробел, а затем необязательный список результирующих файлов.

4.Каждый результирующий файл также должен отделяться от соседних результирующих файлов пробелом. Утилита MAKE анализирует результирующие файлы в порядке их расположения, перекомпилируя по мере необходимости их компоненты.

Если в командной строке не содержатся имена результирующих файлов, то утилита MAKE использует в качестве явно заданного результирующего файла имя первого обнаруженного результирующего файла. Если в командной строке указан один или несколько результирующих файлов, то они будут создаваться по мере необходимости.

78

Файл BUILTINS.MAK

Существуют макрокоманды и правила утилиты MAKE, которые требуется использовать ни один раз.

Способы обработки макрокоманд утилиты MAKE:

можно заносить их в каждый создаваемый формирующий файл для утилиты MAKE;

можно занести все эти элементы в один файл и воспользоваться директивой !include в каждом создаваемом формирующем файле утилиты MAKE;

можно занести все эти элементы в файл BUILTINS.MAK. Каждый раз, когда запускается утилита MAKE, она ищет

файл с именем BUILTINS.MAK. Однако наличие файла BUILTINS.MAK не является обязательным. Если MAKE обнаруживает файл BUILTINS.MAK, то сначала она интерпретирует этот файл. Если утилита MAKE не может обнаружить файл BUILTINS.MAK, то она переходит непосредственно к интерпретации файла MAKEFILE (или того формирующего файла утилиты MAKE, который был задан с помощью параметра -f).

Утилита MAKE (под DOS) сначала ищет файл BUILTINS.MAK в текущем каталоге. Если он отсутствует, то MAKE осуществляет поиск в том каталоге, откуда была вызвана сама утилита MAKE. Cледует заносить файл BUILTINS.MAK в тот же каталог, где находится файл MAKE.EXE.

Утилита MAKE всегда осуществляет поиск формирующего файла только в текущем каталоге. Этот файл содержит правила для конкретной создаваемой выполняемой программы. Как файл BUILTINS.MAK, так и формирующий файл подчиняются одинаковым синтаксическим правилам.

Поиск файлов, задаваемых с помощью директивы !include, также осуществляется в текущем каталоге. Если используется параметр -I (файлы включения), то она будет также выполнять поиск в каталоге, заданном с помощью параметра -I.

BUILTINS.MAK содержит стандартные правила и макрокоманды, которые утилита MAKE применяет перед тем, как она использует формирующий файл (параметр -r позволяет MAKE игнорировать BUILTINS.MAK).

79

Использование TOUCH.EXE

Иногда требуется вызвать принудительную перекомпиляцию или построение целевого файла, даже если он еще не изменялся. Это можно сделать с помощью утилиты TOUCH, которая изменяет дату и время одного или более файлов на текущие дату и время, делая его (их) более новым, чем файлы, откоторых он зависит.

Можно также вынудить MAKE перестроить целевой файл, изменив один из файлов, от которых он зависит. Для этого необходимо набрать в командной строке

TOUCH имя_файла [имя_файла]

После этого TOUCH обновляет дату и время создания файла.

Параметры командной строки

Параметры командной строки управляют поведением утилиты MAKE. Имеет значение регистр букв (верхний или нижний); параметр -d не является допустимой заменой параметру -D.

Кроме того, для указания параметров можно задавать либо косую черту (/), либо дефис (-).

Параметр

Действие

-? или -h

Выводит информационное сообщение. Отображаются

 

стандартные параметры, за которыми следует знак

 

плюс

-B

Осуществляет полную перекомпиляцию всех резуль-

 

тирующих файлов вне зависимости от дат создания

 

файлов

-Dмакро

Определяет макро как один символ выражение !ifdef

 

макро будет возвращать True

[D]ид=[стр]

Определяет названный идентификатор ид как строку

 

стр, стоящую после знака равенства. Эта строка не

 

может содержать ни пробелов, ни знаков табуляции

-fимя_файла

Использует имя_файла в качестве формирующего

 

файла для утилиты MAKE. Если имя_файла не суще-

 

ствует и не задано расширение имени файла, то утили-

 

та MAKE пытается найти файл FILENAME.MAK

-Iкаталог

Осуществляет поиск файлов включения в указанном

 

каталоге (а также в текущем каталоге)

80