Использование модулей. Режимы Compile, Build и Make при компиляции модулей
При использовании модулей предполагается, что модули, которые используются (через Uses) в программе, должны быть уже оттранслированы и храниться, как машинный код, а не как исходный код на Паскале. Более того, определенные стандартные модули (System, Dos, Crt, Graph, Overlay, Printer, Wincrt, Strings) хранятся в т.н. стандартной биб-ке (TURBO.TPL, TPW.TPL или TPP.TPL) и автоматически загружаются в память вместе с биб-кой при запуске Borland Pascal.
программой TPUMOVER.EXE можно посмотреть состав стандартных модулей в библиотеке, убрать модуль из библиотеки (благодаря чему уменьшается его размер и количество памяти, необходимой для его загрузки), добавить модуль как стандартный в библиотеку
В результате использование одного или нескольких модулей очень незначительно увеличивает время компиляции (сборки) программы (обычно менее чем на секунду).
Фактически, если модуль скомпилирован, его использование сохраняет вам время при перекомпиляции. Поскольку компилятор не перекомпилирует модуль, пока он не изменяется, использование модулей в программе ускорит процесс ее построения.
Когда в интерфейсную часть модулявносятся изменения, другие модули, использующие этот модуль, должны быть заново скомпилированы. При использовании команд Make или Build компилятор делает это автоматически. Однако если изменения коснулись только секции реализацииили секции инициализации, то другие модули, в которых используется этот модуль, перекомпилировать не нужно.
Borland Pascal предоставляет пользователю ряд стандартных модулей, таких как System, Crt, DOS, Graph, WinCrt и др. Первые три из перечисленных стандартных моделей обычно записаны в одну из трех библиотек исполняющей системы (в зависимости от целевой платформы).
Библиотеки исполняющей системы для целевой платформы
Имя библиотеки | Целевая платформа |
TURBO.TPL | DOS реального режима |
TPW.TPL | Windows |
TPP.TPL | DOS защищенного режима |
Модуль System всегда подключается автоматически. В этом модуле сосредоточены все стандартные функции и для поддержки таких средств, как файловый ввод-вывод, обработка строк, операции с плавающей запятой, динамическое распределение памяти и других этот модуль реализует весь нижний уровень.
Другие модули автоматически не подключаются: вы должны обязательно включить их в оператор uses. Например:
uses Dos,Crt;{ теперь могут быть доступны средства модулей Dos и Crt}
Real Compile\Target Protected mode Windows |
Uses unit_A;
то компилятор будет перед трансляцией программы пытаться найти на диске файл с именем unit_a.tpu. Если есть необходимость хранить модуль в файле с другим именем, например, unit_B, то следует использовать директиву компилятора $U для переопределения имени TPU-файла. Эта директива задает "настоящее" имя TPU-файла и должна размещаться непосредственно перед именем подключаемого модуля в предложении USES. Так в данном случае:
uses {$U unit_B} unit_A;
компилятор будет для подключения модуля unit_A пытаться найти файл:
Unit_B.tpu.
При поиске файла с модулем, если задана опция компилятора Compile, то предполагается, что все используемые модули уже откомпилированы и компилятор выполняет поиск (откомпилированного модуля) по следующей схеме:
1) компилятор просматривает библиотеку исполняющей системы (обычно turbo.tpl);
2) если модуль не найден в библиотеке исполняющей системы, то поиск продолжается в текущем каталоге;
3) если модуль не найден в текущем каталоге, то поиск продолжается в каталогах, заданных с помощью установок в среде Options| Directories| Unit Directories
Если ничего не найдем - то ошибка.
Если заданы опции компилятора Make или Build, то предполагается, что какие-то части модуля были изменены, и описанные выше 3 шага проводятся в поисках не файла с расширением TPU, а в поисках исходного текста модуля, который д.б. перекомпилирован (потому, что возможно изменен) перед трансляцией самой программы:
- если выбран Make (условная компиляция), то будет проверяться наличие всех необходимых tpu-файлов и если какой-то файл не найден или соответствующий исходник был изменен (после последней компиляции), то файлы только этих модулей будут отыскиваться и перекомпилироваться;
- если выбран Build (безусловная компиляция), то будет выполнена принудительная перекомпиляция всего, что входит в проект (программа + текст модулей)).
Дата добавления: 2016-05-28; просмотров: 1943;