Страница 12 из 69
- 93,94 -
Остановка Make
-----------------------------------------------------------------
Имеется несколько причин прерывания процесса make в Турбо
Си. Очевидно, Project-Make останавливается после создания выпол-
няемого файла. Однако, Project-Make будет также останавливаться
для вывода сообщений об ошибках некоторого типа.
Например, Project-Make всегда будет останавливаться, если он
не сможет найти один из исходных файлов (или один из зависимых
файлов - что будет обсуждаться позже), перечисленных в файле про-
екте. Кроме того, вы сами в состоянии остановить Project-Make,
нажав Ctrl-Break.
Make может также остановиться, когда компилятор генерирует
сообщения. Вы можете выбрать тип сообщений, по которым надо оста-
навливаться, установкой в меню Project режима переключателя Break
make on. Этот переключатель имеет значение по умолчанию Break
make on...Errors - которое обычно устраивает вас. Однако, вы мо-
жете захотеть прервать make после компиляции файла, при наличии
предупреждений, ошибок, фатальных ошибок или перед началом компо-
новки.
Полезность каждой из этих возможностей фактически определя-
ется способом, которым вы предпочитаете исправлять ошибки и пре-
дупреждения. Если вы предпочитаете исправлять их сразу по обнару-
жению, то вам необходимо установить переключатель Break make on в
режим Warnings (предупреждения) или Errors (ошибки). Если вы
предпочитаете работать с полным списком ошибок во всех исходных
файлах до их исправления, то необходимо установить переключатель
в режим Fatal errors (фатальные ошибки) или Link (компоновка).
- 95,96 -
Синтаксические ошибки в нескольких исходных файлах.
-----------------------------------------------------------------
Для демонстрации ошибок в нескольких файлах установите пере-
ключатель Break make on в состояние Fatal errors (фатальные ошиб-
ки). Для этого нажатием Alt-P войдите в меню Project и выберите
Break make on. Из подменю выберите пункт Fatal errors (фатальные
ошибки).
К данному моменту вы должны были уже внести синтаксические
ошибки в MYMAIN.C и MYFUNCS.C. Нажмите F9 (MAKE) "создание проек-
та". Окно компиляции покажет компилируемые файлы и количество
ошибок и предупреждений в каждом файле и общее для сеанса Make.
Когда появится сообщение Press any key (нажмите любую клавишу),
нажмите пробел.
Ваш курсор должен располагаться на первой ошибке или предуп-
реждении в окне сообщений. И если файл, к которому относится это
сообщение, находится в редакторе, яркая подсветка в окне редакто-
ра покажет вам место возникновения проблемы у компилятора. Далее
вы можете перемещаться вверх и вниз в окне сообщений для просмот-
ра различных сообщений. Заметим, что для каждого исходного файла
имеется сообщение "Compiling" (компиляция), которое не является
ни ошибкой, ни предупреждением, а просто разделяет различные со-
общения, генерируемые для каждого файла.
Когда вы подойдете вниз к границе файла, окно редактора мо-
жет перейти или не перейти на следующий файл в зависимости от
состояния Messages Track в меню Debug (отладка). По умолчанию от-
слеживание сообщений производится только в текущем файле.
Итак, перемещаясь к сообщению, которое относится к файлу,
которого нет в окне редактора, подсветка выключается. Если вы вы-
бирете одно из этих сообщений (т.е. нажмете Ввод, находясь на со-
общении), то соответствующий файл будет загружен в редактор, и
вам будет указано курсором место ошибки. Если вы затем вернетесь
в окно сообщений нажатием F6 (Message), то слежение в этом файле
возобновится.
Однако, установив переключатели Messages Track в режим All
files (все файлы), вы можете обрабатывать сообщения через границы
файлов. Это означает, что, когда вы перемещаетесь по окну сообще-
ний, Турбо Си автоматически будет загружать соответствующий файл
в редактор и, следовательно, позволит вам увидеть, к чему
- 97,98 -
относится каждое сообщение. Попробуйте сделать это сами.
Вы можете также полностью отключить обработку ошибок, уста-
новив переключатель Messages Track в режим off. В этом случае вы
просто выбираете сообщение, с которым хотите работать и нажимаете
ввод. Соответствующий файл загружается в редактор, а курсор ука-
зывает на место ошибки.
Заметим, что на Alt-F7 и Alt-F8 (предыдущая ошибка и следую-
щая ошибка) не действует изменение режимов переключателя Track
messages. Эти полезные клавиши всегда будут находить следующую
или предыдущую ошибку и загружать соответствующий файл, если это
необходимо.
Сохранение и очистка сообщений
-----------------------------------------------------------------
Обычно, перед созданием проекта, окно сообщений очищается
для новых сообщений. Иногда, однако, требуется сохранять сообще-
ния между созданием проектов.
Рассмотрим следующий пример: у вас может быть проект, имею-
щий множество исходных файлов, и переключатель Break make on ус-
тановлен на остановку по ошибкам (Errors). В этом случае вы може-
те получить несколько предупреждающих сообщений в нескольких
файлах, но как только в одном из файлов обнаружится ошибка, пост-
роение останавливается. Вы обнаруживаете эту ошибку и хотите оп-
ределить, исправит ли ее компилятор. Однако, если вы снова выпол-
няете make или компиляцию, предыдушие предупреждающие сообщения
пропадают. Как этого избежать? Все, что вам нужно сделать - это
включить переключатель Keep messages в меню Options/Environment.
Когда переключатель Keep massages включен, сообщения не очи-
щаются при начале построения. Удаляются только сообщения из пере-
компилируемых файлов. Следовательно старые сообщения для данного
файла заменяются новыми сообщениями, генерируемые компилятором.
- 99,100 -
Если в некотором месте вы работаете с сообщениями, то вы
можете очистить их по выбору Clear messages on в меню Debug
(отладка). При этом очищаются все текущие сообщения. Выключая
установку Keep messages и запуская снова make, мы получим очистку
предыдущих сообщений.
Очистка предыдущих сообщений при изменении проекта - это чу-
десная идея. Очистка выполняется легко - заданием в проектном ме-
ню соответствующей функции. После выбора Сlear project вы можете
опредилить новый проект, компилировать и выполнять однофайловые
программы посредством загрузки их в редактор или по определению
имени первичного Си файла.
Более мощные средства построения проекта
-----------------------------------------------------------------
В последнем описании построения проекта вы столкнулись с на-
иболее типичной ситуацией - использованием простого списка исход-
ных файлов Си. Project-Make предусматривает гораздо больше, чем
показано в этом пpостом примере. Для того, чтобы увидеть это,
нужно понять как работает make.
Make работает с помощью сравнения даты создания исходного
файла с датой создания объектного файла, генерируемого компилято-
ром. Это сравнение дат создания определяет некоторые неявные за-
висимости в простом списке файлов.
В ранее данном примере с использованием MYPROG.PRJ имеются
следующие зависимости:
MYMAIN.OBJ зависит от MYMAIN.C
MYFUNCS.OBJ зависит от MYFUNCS.C
MYPROG.EXE зависит от MYMAIN.OBJ, MYFUNCS.OBJ и MYPROG.PRJ
Это означает, что объектный файл MYMAIN.OBJ не соответствует
- 101,102 -