Страница 13 из 69
по дате, если MYMAIN.C моложе, чем MYMAIN.OBJ; следовательно,
MYMAIN.C будет перекомпилирован. Заметим, что выполняемый файл
всегда зависит от всех объектных файлов проекта и от самого про-
ектного файла. Этот последний факт означает, что если любой из
объектных файлов или сам проектный файл MYPROG.PRJ имеет более
позднюю дату, чем MYPROG.EXE, то функция Make перекомпонует файл
MYPROG.EXE. Эти неявные зависимости возникают из простого списка
имен файлов вашего проекта.
Явные зависимости
----------------------------------------------------------------
Однако, более сложные проекты требуют более совершенных воз-
можностей построения, которые позволяют задавать явные зависимос-
ти. Это полезно, когда конкретный исходный файл Си зависит от
других файлов. Для исходных файлов Си обычным делом является
включение нескольких файлов заголовка (.Н файлов), которые опре-
деляют интерфейс с внешними программами. Если интерфейс с этими
программами изменяется, то вам нужно перекомпилировать файл, ко-
торый использует эти программы. Это делается с помощью явных за-
висимостей.
Например, у вас есть главная программа MYMAIN.C, которая
включает файл заголовка MYFUNCS.H. Make перекомпилирует MYMAIN.C
и MYFUNCS.C, если MYFUNCS.H изменяется, при условии, что в вашем
проектном файле заданы следующие зависимости:
MYMAIN.C (MYFUNCS.H)
MYFUNCS (MYFUNCS.H)
Заметим, что этот файл проекта делает файл MYFUNCS.C зависи-
- 103,104 -
мым от файла MYFUNCS.H. Это хорошая проверка на логичность ваших
файлов. Итак, теперь вы имеете те же самые косвенные зависимости,
а также некоторые явные, а именно:
MUMAIN.OBJ зависит от MYMAIN.C и MYFUNCS.H
MYFUNCS.OBJ зависит от MYFUNCS.C и MFUNCS.H
MYPROG.EXE зависит от MYMAIN.OBJ, MYFUNC.OBJ и MYPROG.PRI
Любой Си файл, перечисленный в файле проекта, может иметь
столько явных зависимостей, сколько необходимо. Просто поместите
файлы, от которых должен зависеть ваш файл с исходным текстом, в
скобки и разделите их пробелами, запятыми или точками с запятой.
Например, если нужно, чтобы MYMAIN.C зависел от MYFYNCS.H
YOURS и OTHER.H, введите
MYMAIN.C (MYFUNCS.H, YORS.H, OTHER.H)
Автоматическая проверка зависимости.
------------------------------------------------------------------
Средство создания проектов имеет способность автоматической
проверки зависимости между исходными файлами в проекте и объект-
ными файлами на которые они ссылаются. Средство создания открыва-
ет файл .OBJ и ищет в нем информацию о файлах, включенных в ис-
ходный текст. Эта информация всегда помещается как ТС, так и ТСС
в файл .OBJ при компиляции исходного модуля. Затем время и дата
каждого файла, который использовался при создании файла .OBJ,
проверяется с информацией о времени и дате находящейся в файле
.OBJ. Если даты различны, то .C исходный файл будет перекомпили-
рован.
Примечание. Чтобы данная возможность была включена, вы долж-
ны в интегрированной среде переключатель Project/Auto
Dependencies установить в положение On.
Это все о зависимостях. Этот метод дает вам мощный прием для
создания программ без использования полного синтаксиса make.
- 105,106 -
Какие у Make дополнительные возможности?
-----------------------------------------------------------------
Имеются две дополнительные возможности, усиливающие функции
Make. Первая позволяет вам задавать внешние объектные и библио-
течные файлы для компоновки вашего проекта, а вторая - изменять
стандартные загрузочные модули и библиотеки.
Внешние объектные и библиотечные файлы.
-----------------------------------------------------------------
Время от времени вам может потребоваться использовать неко-
торые программы, написанные на других языках, например, ассем-
блере или же другом компиляторе Си. Или, быть может, вам понадо-
бятся дополнительные библиотечные файлы, выполняющие специальные
функции, не предусмотренные в стандартных библиотеках. В этих
случаях вы можете включить имена объектных или библиотечных фай-
лов в ваш проект с явным расширением. Например, так (заметим, что
порядок перечисления файлов не важен):
MYMAIN (MYFUNCS.H)
MYFUNCS (MYFUNCS.H)
SPECIAL.OBJ
OTHER.LIB
Когда Projekt-Make увидит файл с явным расширением .OBJ, то
он просто включает его в список файлов, компонуемых вместе. Попы-
ток откомпилировать его или отыскать его исходный файл не проис-
ходит. Точно так же, имя в вашем файле проекте с расширением .LIB
добавляется в список библиотек, которые компоновщик просматривает
при попытке разрешить внешние ссылки. Опять же, он не пытается
компилировать или перестраивать библиотеку.
Заметим, что эти типы файлов не могут иметь списки явных за-
висимостей (если их сделать, они будут проигнорированы). Однако,
можно свободно включить эти имена в списки зависимостей ваших
исходных Си файлов, как любые другие файлы, от которых вы хотите
установить зависимости.
Например:
MYMAIN (MYFUNCS.H, SPECIAL.OBJ)
- 107,108 -
MYFUNCS (MYFUNCS.H, OTHER.LIB)
SPECIAL.OBJ
OTHER.LIB
Это означает, что при изменении файлов .OBJ или .LIB, исход-
ные файлы Си перекомпилируются.
Изменение стандартных файлов.
-----------------------------------------------------------------
В некоторых случаях необходимо изменить стандартные загру-
зочные файлы и библиотеки. Эта возможность обычно резервируется
для заядлых программистов (хакеров), а не для практики начинаю-
щих. Но, если вы почувствуете в этом необходимость, то сделайте
нижеследующее.
Для отмены стандартного загрузочного файла поместите файл с
именем C0*.OBJ первым в вашем файле проекте - где знак * заменяет
любое имя, соответствующее DOS (например, C0MINE.OBJ). Критичес-
кими моментами здесь является то, что имя должно начинаться с С0,
стоять на первом месте в вашем проекте и иметь явное расширение
.OBJ.
Для изменения стандартной библиотеки все, что вам нужно сде-
лать, это поместить имя специальной библиотеки в любом месте
списка имен вашего проекта. Имя библиотеки должно начинаться с С,
следующая буква указывает на модель (так S для малой модели),
следующие шесть знаков могут быть любыми. Вы должны явно указать
расширение .LIB (например, CSMYFILE.LIB или CSNEW.LIB).
При исключении стандартной библиотеки, МАКЕ не будет выпол-
нять компоновку с математической библиотекой, в соответствии с
установкой Floating point (плавающей точки) в меню O/C/Code
Generation. Если вы хотите использовать и эти библиотеки при от-
мене стандартной библиотеки, то вы должны явно включить их в ваш
файл проекта.
- 109,110 -
Компиляция и компоновка из командной строки.
-----------------------------------------------------------------
В дополнение к использованию интегрированной среды вы можете
запускать ваши программы Турбо Си при помощи обычного интерфейса
типа командной строки. Несмотря на то, что режим интегрированной
среды является лучшим для разработки и выполнения ваших программ,
вы можете иногда предпочесть использование командной строки; в