УПРАBЛEHИE ПРОЕКТОМ

Никогда не изменяйте главный программный файл вручную. Оставьте эту работу для C++Builder. Добавление и удаление модулей, а также управле­ние созданием форм осуществляется с помощью команд и диалоговых окон визуальной среды.

Файл Project1.cpp

/---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

USERES("Project2.res");

USEFORM("Unit1.cpp", OneForm);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm(__classid(TOneForm), &OneForm);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

return 0;

}

//---------------------------------------------------------------------------

 

В первой строке подключается заголо­вочный файл библиотеки VCL. Во второй строке записана уже встречавшаяся нам директива#pragma hdrstop.

Продолжим изучение главного программного файла. ДирективаUSEFORM под­ключает модуль Unit1, в котором определена формаOneForm. ДирективаUSERESподключает к генерируемому ЕХЕ-файлу так называемые ресурсы, в данном случае значок приложения. Этот значок будет виден на панели задач Windows.

Далее следует главная функция программы — WinMain. Она вызывается авто­матически при запуске Windows-приложения. Анализируя работу функции WinMain, вы обнаружите, что она обращается к некоторому объектуApplication.Объект Application лежит в основе любого приложения и доступен на протяже­нии всего времени его работы. ФункцияWinMain вызывает у объектаApplicationтри метода:Initialize, CreateForm и Run. Вызов методаInitialize подготавливает приложение к работе, метод CreateForm загружает и инициализирует форму OneForm, а методRun активизирует форму и начинает выполнение приложения. Фактически время работы методаRun это время работы приложения. Выход из метода Run происходит тогда, когда пользователь закрывает главную форму приложения; в результате приложение завершается.

Теперь несколько слов о файле проекта. Он содержит указания по компиля­ции и компоновке всех составляющих проект файлов. Чтобы увидеть файл проекта, выберите в меню команду View | Project Makefile.

 

Другие файлы проекта

Выше мы рассмотрели основные файлы проекта. Кроме них существует также файл ресурсов с расширениемRES (сокращение от RESource). В нем, напри­мер, хранитсязначок приложения, отображаемый на панели задач. О том, как задать значок приложения, мы расскажем при обсуждении вопросов управле­ния проектом.

В проект могут входить также логически автономные элементы: точечные рисунки (BMP-файлы), значки (ICO-файлы), файлы справочников (HLP-файлы) и т. п., однако ими управляет сам программист.

Теперь можно уточнить схему, отражающую структуру проекта (рис. 3.4):

Итак, состав проекта понятен. Нужно теперь выяснить, как им управлять — создавать и сохранять проект, добавлять и удалять модули, устанавливать параметры компилятора, компилировать и запускать приложение. Этим сей­час и займемся.

 

 

Создание, сохранение и открытие проекта

При старте C++Builder автоматически создается новый проект. Это сделано для вашего удобства. Если же вам потребуется создать новый проект, не перегружая C++Builder, просто выполните команду меню File | New Application. В результате старый проект будет закрыт, а вместо него создан новый. В новый проект C++Builder всегда помещает чистую форму.

В процессе разработки приложения вы добавляете на форму компоненты, пишете обработчики событий, добавляете в проект дочерние формы, в общем, проектируете приложение. Когда что-то уже сделано, имеет смысл сохранить проект. Для этого выполните команду главного меню File | Save All. Среда запросит сначала имя для программного модуля формы, а затем имя для проекта. Если файлы с указанными именами уже есть на диске, C++Builder скажет вам об этом и попросит подтвердить их перезапись.

Если вдруг понадобится заменить имя проекта на другое, воспользуйтесь ко­мандой меню File | Save Project As... Если же нужно заменить имя модуля, воспользуйтесь командой File | Save As... Операции эти элементарны и не тре­буют дальнейших пояснений.

Для открытия в C++Builder ранее сохраненного на диске проекта достаточно выполнить команду главного меню File | Open Project… На экране появится окно диалога, где вы должны указать или выбрать из представленного списка каталог и имя загружаемого проекта.

 

Окно Project Manager

При создании более или менее сложного приложения программист всегда должен знать, на какой стадии разработки он находится, иметь представление о составе проекта, уметь быстро активизировать нужный файл, добавить ка­кой-либо новый файл или удалить ненужный, установить параметры проекта и т. д. Для этого в C++Builder имеется окно Project Manager (так называемый менеджер проекта). Фактически это визуальный инструмент для редактирова­ния главного программного файла и файла проекта. Он вызывается из меню командой View | Project Manager.

 

 

Настройка параметров проекта в окне Project Options

Проект — вещь очень гибкая, и вы можете управлять его параметрами. Уста­новить параметры проекта можно двумя способами:

· Вызвать диалоговое окно Project Options и выставить значения переключателей

· Присвоить значения специальным константам в МАК-файле про­екта

Какой способ выбрать — зависит от конкретной задачи. Некоторые параметры компилятора (например, некоторые виды оптимизаций) можно выставить только в файле проекта. Однако в большинстве случаев установить значения парамет­ров проще всего с помощью диалогового окна Project Options. Чтобы его вы­звать, выберите в меню команду Options | Project или щелкните на соответствую­щей кнопке в окне менеджера проекта. На экране появится диалоговое окно, вам останется лишь установить в нем нужные значения переключателей. Диалоговое окно состоит из нескольких страниц, на них очень много парамет­ров, поэтому мы рассмотрим только те, которые используются наиболее часто.

На странице Forms можно задать главную форму приложения (Main form) и в списке Auto-create forms указать формы, которые будут создаваться одновре­менно с главной формой (рис. 3.7).

На странице Application задаются название (Title) и значок (Icon) приложения, которые будут отображаться в среде Windows на панели задач. Здесь же задается имя файла справочника (Help file), который будет вызываться автома­тически при нажатии клавиши F1 (о том, как создается файл справочника, см. главу 15) (рис. 3.8).

 

На странице C++ задаются параметры компилятора (рис. 3.9). Наиболее инте­ресными здесь являются две кнопки — Full debug и Release. Первая автоматически выставляет все параметры компилятора, необходимые для отладки проекта. Этой кнопкой следует пользоваться на этапе разработки проекта. Вторая кнопка выставляет параметры для получения окончательной оптимизирован­ной версии кода без отладочной информации.

 

На странице Pascal выставляются параметры компилятора с языка Object Pascal, встроенного в C++Builder для переносимости проектов из Delphi. Вам они не нужны.

На странице Linker задаются параметры компоновщика (рис. 3.10). Здесь сле­дует обратить внимание на параметр Use incremental linker, предназначенный для ускорения процесса компоновки за счет создания дополнительных фай­лов, хранящих неизменяемые участки кода проекта. При компоновке выпол­няемого ЕХЕ-файла стандартные библиотеки подключаются только для тех исходных модулей, которые были изменены и подвергнуты компиляции. Для остальных модулей компоновщик просто считывает участок кода из дополни­тельного файла и не тратит времени на разрешение ссылок к стандартным библиотекам.

 

На странице Directones/Conditionals можно задать маршруты к стандартным заголовочным файлам (Include path), маршруты к стандартным библиотекам (Library path), ввести параметры для директив условной компиляции#ifdef и #ifndef (Conditional defines) (рис. 3.11).

 

Обратите внимание на параметр Default, находящийся внизу и присутствую­щий навсех страницах. Он позволяет запомнить установленные значения параметров и использовать их по умолчанию при создании новых проектов.

Когда все параметры проекта установлены, C++Builder сохраняет их в файле проекта (просмотрите МАК-файл и попробуйте найти выставленные вами па­раметры). Теперь можно приступать к компиляции.

Компиляция и компоновка проекта

Компиляция может выполняться на любой стадии разработки проекта. Для этого достаточно выполнить команду меню Project | Make или нажать комби­нацию клавиш Ctrl+F9. При этом компилируются все программные модули, содержимое которых изменялось после последней компиляции. В результате для каждого программного модуля создается файл с расширением OBJ (объек­тный код). Затем C++Builder компилирует главный программный файл и компонует из OBJ-файлов выполняемый ЕХЕ-файл. Имя ЕХЕ-файла совпадает с именем файла проекта.

Кроме обычной компиляции вы еще можете выполнить тотальную компиля­цию. Последняя обеспечивает компиляцию абсолютно всех программных мо­дулей проекта, для которых доступны исходные тексты. При этом не важно, вносились в них изменения после предыдущей компиляции или нет. Тоталь­ная компиляция проекта выполняется с помощью команды главного меню Project | Build All. В результате также формируется ЕХЕ-файл, но времени на его получение тратится намного больше.

Запуск готового приложения

Когда после множества компиляций вы исправите все ошибки, можно будет посмотреть на результат вашего труда. Для этого надо выполнить созданное приложение с помощью команды меню Run | Run или клавиши F9. Перед выполнением будет автоматически повторен процесс компиляции (если в про­ект вносились изменения), и после его успешного завершения приложение запустится на выполнение. В результате вы увидите на экране его главную форму.