<chapter id="applicationwizard">

<chapterinfo>
  <authorgroup>
    <author
><firstname
>Bernd</firstname
><surname
>Pol</surname
></author>
    <!-- ROLES_OF_TRANSLATORS -->
  </authorgroup>
</chapterinfo>

<title
>Начало &ndash; Мастер программ</title>

<indexterm zone="applicationwizard">
  <primary
>Мастер программ</primary
></indexterm>

<para
>В &kdevelop; разработка ПО организована <emphasis
>проектами</emphasis
>. Проект содержит всё, что относится к данному заданию на программирование: исходные файлы, дополнительные файлы данных, средства управления, в т.ч. система сборки, доступ ко всем компонентам и к любым дополнительным инструментам, словом всё, что нужно для получения реально работающей программы. </para>
<para
>Такая организация позволяет легко переключаться между глобальными заданиями. Это очень удобно, если вы работаете над несколькими приложениями одновременно. что бывает очень часто. Откройте проект в &kdevelop; и вы сразу сможете продолжить работу над ним с того места, где остановились в прошлый раз. </para>

<sect1 id="new-projects">
<title
>Новые проекты</title>

<indexterm zone="new-projects">
  <primary
>проект</primary>
  <secondary
>новый</secondary
></indexterm>

<para
>При создании нового проекта нужно выполнить множество формальных процедур. Как то указание папки проекта, определение файлов с заголовками и исходным кодом, первоначальная настройка сборочной системы. </para>
<para
>&kdevelop; обеспечивает простой способ создания нового проекта &mdash; <emphasis
>Мастер приложений</emphasis
>. Его можно запустить из меню <menuchoice
><guimenu
>Проект</guimenu
> <guimenuitem
>Создать</guimenuitem
></menuchoice
>. </para>
<para
>Мастер приложений значительно упрощает и автоматизирует создание нового проекта </para>
<orderedlist>
  <listitem
><para
>На этапе <link linkend="new-projects-start-type"
>Выбора языка программирования</link
> вы также можете использовать один из предлагаемых шаблонов программы. </para
></listitem>
  <listitem
><para
>Затем следует ввод <link linkend="new-projects-start-general"
> некоторой общей информации</link
>, как то название приложения, каталог его исходников и т.д. </para
></listitem>
  <listitem
><para
>Теперь решите, будете ли вы использовать <link linkend="new-projects-start-cvs"
>систему контроля версий</link
>, такую, как, например, CVS, и, если будете, введите требуемые данные. </para
></listitem>
  <listitem
><para
>Выберите шаблоны для <link linkend="new-projects-start-templates"
>начальных заголовочных и исходных файлов</link
> (если есть). </para
></listitem>
  <listitem
><para
>Теперь осталось <link linkend="new-projects-start-build"
>сгенерировать начальные файлы</link
>, структуру каталогов, начальные заголовочные и исходные файлы и служебные файлы для управления проектом, например каркас для make. </para
></listitem>
</orderedlist>
<para
>Voil&agrave; &mdash; и это всё. Теперь у вас есть база для начала продуктивной работы. </para>
<para
>А теперь рассмотрим это более подробно... </para>

<sect2 id="new-projects-start">
<title
>Первоначальные шаги</title>

<indexterm zone="new-projects-start">
  <primary
>диалог</primary>
  <secondary
>создание нового проекта</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>проект</primary>
  <secondary
>создание нового проекта</secondary>
  <tertiary
>диалог</tertiary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>проект</primary>
  <secondary
>шаблоны</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>шаблоны</primary>
  <secondary
>проект</secondary
></indexterm>

<para
>Чтобы создать новый проект, выберите пункт <guimenuitem
>Создать проект</guimenuitem
> из меню <guimenu
>Проект</guimenu
>: </para>

<screenshot id="screenshot-newprojectwizard">
  <mediaobject>
    <imageobject>
      <imagedata fileref="createnewproject.png" format="PNG"/>
    </imageobject>
    <caption
><para
>первый шаг создания проекта </para
></caption>
  </mediaobject>
</screenshot>

<para
>Диалог разделён на две части В верхней вы можете выбрать язык программирования, который будет использоваться для написания программы, а в нижней помещена некоторая общая информация. </para>

<sect3 id="new-projects-start-type">
<title
>Выбор языка программирования и типа приложения</title>

<indexterm zone="new-projects-start-type">
  <primary
>проект</primary>
  <secondary
>тип приложения</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>проект</primary>
  <secondary
>язык программирования</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>проект</primary>
  <secondary
>язык</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>язык</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>язык программирования</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>приложение</primary>
  <secondary
>тип</secondary
></indexterm>

<para
>Вверху справа находится список доступных языков программирования, например: </para>

<itemizedlist>
  <listitem
><para
>Ada <indexterm>
      <primary
>Ada</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C <indexterm>
      <primary
>C</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C++ <indexterm>
      <primary
>C++</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>База данных (SQL) <indexterm>
      <primary
>SQL</primary>
      <secondary
>новый проект</secondary
></indexterm>
    <indexterm>
      <primary
>База данных</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Fortran <indexterm>
      <primary
>Fortran</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Haskell <indexterm>
      <primary
>Haskell</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Java <indexterm>
      <primary
>Java</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Pascal <indexterm>
      <primary
>Pascal</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Perl <indexterm>
      <primary
>Perl</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>PHP <indexterm>
      <primary
>PHP</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Python <indexterm>
      <primary
>Python</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Ruby <indexterm>
      <primary
>Ruby</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Оболочка (Сценарии Bash) <indexterm>
      <primary
>Bash</primary>
      <secondary
>новый проект</secondary
></indexterm>
    <indexterm>
      <primary
>оболочка</primary>
      <secondary
>новый проект</secondary
></indexterm>
  </para
></listitem>
</itemizedlist>

<para
>Выбор определённого языка программирования приводит к доступности соответствующих ему <emphasis
>шаблонов</emphasis
>, которыми вы можете воспользоваться как отправной точкой. </para>
<para
>При выборе шаблона отображается его <emphasis
>краткое описание</emphasis
> и <emphasis
>снимок экрана</emphasis
> главного окна приложения, основанного на выбранном шаблоне. </para>
<para
>Выберите шаблон, наиболее отвечающий вашим целям. Затем введите общую информацию, как описано ниже. </para>

<formalpara>
<title
>Выбор системы управления проектом</title>
<para
>Каждый шаблон привязан к определённой <link linkend="makesystems"
>Системе управления проектом</link
>. </para>
</formalpara>

</sect3
> <!-- new-projects-start-type -->

<sect3 id="new-projects-start-general">
<title
>Указание общей информации</title>

<indexterm zone="new-projects-start-general">
  <primary
>проект</primary>
  <secondary
>свойства</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>свойства</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>приложение</primary>
  <secondary
>название</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>название</primary>
  <secondary
>приложение</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>проект</primary>
  <secondary
>каталог</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>каталог</primary>
  <secondary
>проект</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>путь</primary>
  <secondary
>новый проект</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>проект</primary>
  <secondary
>автор</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>проект</primary>
  <secondary
>e-mail</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>автор</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>e-mail</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>проект</primary>
  <secondary
>main.cpp</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>main.cpp</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>проект</primary>
  <secondary
>лицензия</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>лицензия</primary
></indexterm>

<para
>В нижней части страницы <guilabel
>Общее</guilabel
> диалога <guilabel
>создания нового проекта</guilabel
> можно указать его <guilabel
>свойства</guilabel
> &mdash; данные для построения структуры проекта. </para>
<formalpara>
<title
>Название приложения</title>
<para
>Введите его в верхнее поле <guilabel
>свойств</guilabel
> с соответствующим названием. В нашем примере это <quote
>MyApp</quote
>. </para>
</formalpara>
<para
>Обратите внимание, что в названии разрешается использовать только такие символы: <itemizedlist>
  <listitem
><para
>буквы в нижнем и верхнем регистрах</para
></listitem>
  <listitem
><para
>цифры</para
></listitem>
  <listitem
><para
>символ подчёркивания</para
></listitem>
</itemizedlist>
</para>
<para
>Эти ограничения введены т.к. указанное название будет использовано для <emphasis
>именования некоторых классов</emphasis
>. </para>
<formalpara>
<title
>Каталог проекта</title>
<para
>Также название проекта будет использовано при формировании <guilabel
>каталога приложения</guilabel
>. </para>
</formalpara>
<para
>Название проекта переводится в нижний регистр и добавляется к стандартному пути. </para>
<para
>Если сформированный по названию проекта путь уже существует, кнопка <guibutton
>Далее &gt;</guibutton
> будет неактивна (серого цвета), и мастер вас известит об этом ещё и сообщением. </para>

<formalpara>
<title
>Начальный путь</title>
<para
>Есть два способа выбрать другой каталог для вашего приложения &mdash; выбрать для него другое имя или путь. </para>
</formalpara>
<para
>Это можно установить во втором ряду <guilabel
>свойств</guilabel
>, под названием <guilabel
>Расположение</guilabel
>. Здесь вы должны ввести <emphasis
>путь к каталогу</emphasis
>, в котором будет создан подкаталог с именем проекта (в котором, в свою очередь, будут созданы другие каталоги  разработки). Результирующий каталог для наглядности будет отображён в поле <guilabel
>Окончательное расположение</guilabel
>. </para>
<para
>Мастер приложений автоматически скопирует <emphasis
>начальное значение</emphasis
> в поле <guilabel
>Расположение</guilabel
>. Оно определяется из поля <guilabel
>Каталог с проектами по умолчанию:</guilabel
> на этапе <link linkend="setup-general"
>базовой конфигурации</link
>. В нашем случае в качестве основного пути для новых проектов используется каталог <filename class="directory"
>/home/devel/projects/</filename
>. </para>
<para
>Убедитесь, каталог разработки, отображаемый в поле <guilabel
>Окончательное расположение</guilabel
> не существует в вашей файловой системе. </para>

<note
><para
>Тем временем путь, указанный в поле <guilabel
>Расположение</guilabel
> должен существовать. Если это не так, мастер приложений сообщит об этом добавлением <quote
>(неправильно)</quote
> в строку <guilabel
>Окончательное расположение</guilabel
>. </para
></note>

<formalpara>
<title
>Личная информация</title>
<para
>Заполните приведённые здесь поля если вы хотите, чтобы все знали имя создателя программы. </para>
</formalpara>

<note>
<orderedlist>
  <listitem
><para
>Мастер приложений пытается заполнить их значениями, взятыми из соответствующих разделов центра управления KDE. </para
></listitem>
  <listitem
><para
>Личная информация будет встроена в выбранный шаблон. Например в для KDE C++ вы сможете найти её в начале <filename
>main.cpp</filename
>. </para
></listitem>
  <listitem
><para
>Из всех полей, <emphasis
>необязательным</emphasis
> является <guilabel
>E-mail</guilabel
>, т.к. не все разработчики могут иметь доступ к Сети. </para
></listitem>
</orderedlist>
</note>

<formalpara>
<title
>Версия и лицензия</title>
<para
>Введите номер версии, с которого нужно начать, и лицензию в соответствии с которой вы хотите распространять ваше приложение. </para>
</formalpara>

<para
>Если вы выбрали тип приложения (напр. C/C++), к которому существуют шаблоны, далее вы можете просмотреть информацию о лицензии (для подробностей см. <link linkend="new-projects-start-templates"
>Выбор шаблонов заголовочных/исходных файлов</link
>). </para>
<para
>Если вы выбрали <quote
>другую</quote
> <guilabel
>лицензию</guilabel
>, вам нужно будет ввести её текст самостоятельно. </para>

<note
><para
>Информация о версии и используемой лицензии также будет встроена в выбранный шаблон, в форме, лёгкой для изменения. </para
></note>

<para
>Нажмите кнопку <guibutton
>Далее &gt;</guibutton
>. </para>
</sect3
> <!-- new-projects-start-general -->

</sect2
> <!-- new-projects-start -->

<sect2 id="new-projects-start-cvs">
<title
>Выбор системы контроля версий</title>

<indexterm zone="new-projects-start-cvs">
  <primary
>CVS</primary>
  <secondary
>новый проект</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>проект</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>база данных</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>версия</primary>
  <secondary
>база данных</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>версия</primary>
  <secondary
>CVS</secondary
></indexterm>

<para
>Здесь вы можете выбрать <guilabel
>систему контроля версий</guilabel
>. </para>

<note
><para
>Здесь всё зависит от проекта, подробности о CVS вы можете найти в главе <link linkend="cvs"
>Использование CVS</link
>. </para
></note>

<formalpara>
<title
>Система контроля версий не нужна</title>
<para
>Если вы не хотите использовать эту функцию, просто нажмите <guibutton
>Далее 
></guibutton
>. </para>
</formalpara>

<formalpara>
<title
>Использование CVS</title>
<para
>В нашем примере мы используем <quote
>&cvs;</quote
>. Если вы выберете её Мастер приложений активирует поля, которые нужно будет заполнить. </para>
</formalpara>

<screenshot id="screenshot-newproject-cvs">
  <mediaobject>
    <imageobject>
      <imagedata fileref="create-new-project-cvs.png" format="PNG"/>
    </imageobject>
    <caption
><para
>Настройка CVS для вновь созданного проекта </para
></caption>
  </mediaobject>
</screenshot>

<para
>Система контроля версий, такая как &CVS; (<quote
>Concurrent Versions System</quote
>, система конкурирующих версий) записывает копии файлов проекта в некоторое подобие базы данных. В &CVS; вы можете закачать файлы (<quote
>commit</quote
>) в хранилище, или загрузить их обратно (<quote
>checkout</quote
>/<quote
>update</quote
>). Особенностью системы контроля версий является структурный метод хранения файлов, который всегда позволяет вернуться к более раннему состоянию разработки, если вы допустили неисправимые ошибки. &CVS; также позволяет сотрудничать нескольким разработчикам в большом проекте (как &kdevelop;) не вмешиваясь в работу друг друга. </para>

<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>корень</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>root</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>local</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>remote</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>локальный CVS</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>:local:</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>:local:</secondary
></indexterm>

<formalpara id="new-projects-start-cvs-root">
<title
>CVS Root</title>
<para
>&cvs; ведёт собственную базу данных версий ваших файлов, которая хранится в т.н. <emphasis
>корне &cvs;</emphasis
> (<emphasis
>&cvs; root</emphasis
>). Вам нужно будет указать путь к этому корневому каталогу. </para>
</formalpara>

<para
><emphasis
>Локальный корневой каталог &cvs;.</emphasis
> Если вы разрабатываете программу самостоятельно, локальная база данных &cvs; пригодится как удобная система резервного копирования. Обычно она располагается в вашем домашнем каталоге, под именем <filename
>cvsroot</filename
>: </para>
<para
><userinput
><filename class="directory"
>/home/devel/cvsroot</filename
></userinput
> (где <filename
>devel</filename
> &mdash; имя пользователя в системе) </para>

<note
><para
>Это краткая форма -- на самом деле перед ней должна быть приставка <computeroutput
>:local:</computeroutput
>. Использование краткой формы разрешено только если она начинается со слэша (<computeroutput
>/</computeroutput
>). Т.е. полный адрес локального каталога &cvs; (local &cvs; root) будет выглядеть так: <filename class="directory"
>:local:/home/devel/cvsroot</filename
> </para
></note>

<para
>Введите путь к корневому каталогу &cvs;, установленному в вашей системе. В принципе, вы можете  выбрать любое имя, даже использовать несколько баз данных &cvs;, но мы рекомендуем придерживаться уже установленного корневого каталога &cvs;. </para>
<para
><emphasis
>Инициализация нового корня &cvs;.</emphasis
> Если корень &cvs; не существует, &kdevelop; может изменить это с помощью команды &CVS;. Для этого отметьте <guilabel
>Инициализировать корень</guilabel
> ниже поля <guilabel
>Корень CVS</guilabel
>. </para>
<note
><para
>&kdevelop; только <emphasis
>передаёт команды</emphasis
> системе &CVS;, не делая ничего самостоятельно. К счастью, &cvs; продуман достаточно хорошо, и, перед созданием нового корня &cvs; в указанном вами каталоге, проверяет наличие в нём уже существующего корня &cvs;. Следовательно, если вы оставили включённым параметр <guilabel
>Инициализировать корень</guilabel
> тогда как уже имели инициализированный корень &cvs;, ничего страшного не произойдёт. </para
></note>

<para
><emphasis
>Удалённый корневой каталог &cvs;.</emphasis
>. Возможно вы захотите расположить хранилище на удалённом сервере, особенно если над проектом работает несколько разработчиков. Тогда введите <acronym
>URL</acronym
> корня &cvs; в поле <guilabel
>Корень CVS</guilabel
>. Например, чтобы подключиться к &cvs;-серверу &kde;: </para>
<para
><userinput
><filename class="directory"
>:pserver:mylogin@cvs.kde.org:/home/kde</filename
></userinput
> (где <filename
>mylogin</filename
> соответствует имени регистрации вашей учётной записи &cvs; в репозитории &kde;) </para>

<indexterm zone="new-projects-start-cvs-remote">
  <primary
>удалённый CVS</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>:pserver:</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>:ext:</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS</primary>
  <secondary
>:local:</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS</primary>
  <secondary
>:pserver:</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS</primary>
  <secondary
>:ext:</secondary
></indexterm>

<formalpara id="new-projects-start-cvs-remote">
<title
>Виды удалённых серверов &cvs;</title>
<para
>Есть два типа удалённых серверов &cvs;, это <emphasis
>pserver</emphasis
>, использующий авторизацию без шифрования, и <emphasis
>ext</emphasis
>, в котором доступно шифрование <acronym
>rsh</acronym
> или <acronym
>ssh</acronym
>. Они различаются по приставке в <acronym
>URL</acronym
>: </para>
</formalpara>
<para>
<filename
>:pserver:</filename>
</para>
<para
>для <quote
>password protected server</quote
> </para>
<para>
<filename
>:ext:</filename>
</para>
<para
>для шифрования <acronym
>rsh</acronym
> или <acronym
>ssh</acronym
>. Например: </para>
<para>
<userinput
><filename class="directory"
>:ext:mylogin@cvs.sourceforge.net:/cvsroot/cervisia</filename
></userinput>
</para>
<para
>позволит получить доступ к корню &cvs; популярного интерфейса &cvs;,  <application
>Cervisia</application
>. </para>
<para
>Если вы хотите использовать сервер &cvs; с шифрованием <acronym
>rsh</acronym
> или <acronym
>ssh</acronym
>, укажите протокол шифрования. Введите <userinput
>rsh</userinput
> или <userinput
>ssh</userinput
> в поле <guilabel
>CVS_RSH</guilabel
> в диалоге <guilabel
>создания нового проекта</guilabel
>, на странице <guilabel
>Система контроля версий</guilabel
>. </para>

<note
><para
>Если вы собираетесь использовать шифрование, прочитайте главу <link linkend="cvs"
>Использование CVS</link
>. </para
></note>

<indexterm zone="new-projects-start-cvs-repository">
  <primary
>CVS</primary>
  <secondary
>репозиторий</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-repository">
  <primary
>хранилище</primary>
  <secondary
>CVS</secondary
></indexterm>

<formalpara id="new-projects-start-cvs-repository">
<title
>Хранилище &cvs;</title>
<para
>Теперь нужно указать где следует сохранять файлы проекта в корне &CVS;. это место называется <emphasis
>хранилищем</emphasis
> (repository). </para>
</formalpara>
<para
>В принципе, вы можете выбрать любое имя для хранилища &cvs;, учитывая лишь ограничения на имена файлов, но большинство разработчиков просто указывают название программы. Хранилище, с указанным вами именем, будет создано в корне &cvs;. </para>
<para
>Введите имя хранилища, которое вы хотите использовать в поле <guilabel
>Хранилище CVS</guilabel
> диалога <guilabel
>создание нового проекта</guilabel
>, на странице <guilabel
>Система контроля версий</guilabel
>. </para>

<warning
><para
><emphasis
>Обратите внимание, на то, что нельзя использовать уже существующее хранилище!</emphasis
> Система &CVS; сообщает только о конфликтах, так что вы можете потерять файлы с не уникальным именем! </para
></warning>

<formalpara>
<title
>Остающиеся поля</title>
<para
>Осталось совсем немного. Остальные поля заполнены за вас автоматически: </para>
</formalpara>
<para
>Поле <guilabel
>Производитель</guilabel
> используется только для совместимости. Вы можете оставить значение по умолчанию. </para>
<para
>Поле <guilabel
>Сообщение</guilabel
> содержит комментарий, который будет добавлен к первой версии файлов в хранилище &cvs;. </para>
<para
>Поле <guilabel
>Метка выпуска</guilabel
> содержит тег (ветку) &CVS;, с которым выйдет первый выпуск вашего приложения. С помощью <emphasis
>тега</emphasis
> вы всегда сможете вернуться к состоянию разработки на данный момент. Для подробностей см. <link linkend="cvs"
>Использование CVS</link
>. </para>
<para
>По умолчанию предлагается тег <quote
>start</quote
>. </para>

<note>
<para
>Если какая-либо информация введена неправильно, это выясниться на последнем этапе создание проекта. Поэтому следите за <guilabel
>сообщениями</guilabel
>, которые отображаются в это время. Если произошли ошибки &CVS;, вы увидите что-то на подобие этого: </para>

<screen
><computeroutput
><literal>
* cd '/home/devel/test' &amp;&amp; cvs -d '/home/devel/mycvsroot' \
  import -m 'new project' '' 'vendor' 'start' &amp;&amp;\
  sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \
  '/home/devel/mycvsroot'
* cvs [import aborted]: /home/devel/mycvsroot/CVSROOT: No such file or
  directory
* *** Exited with status: 1 ***
</literal
></computeroutput
></screen>

<para
>Если это произошло, инициализируйте &cvs; самостоятельно, или удалите каталог проекта и начните процесс создание проекта сначала. </para>
</note>

<para
>После ввода всех данных &CVS;, нажмите <guibutton
>Далее &gt;</guibutton
>. </para>

<note
><para
>Чтобы исправить ошибку на предыдущей странице, нажмите кнопку <guibutton
>&lt; Назад</guibutton
>. </para
></note>

</sect2
> <!-- new-projects-start-cvs -->

<sect2 id="new-projects-start-templates">
<title
>Выбор шаблонов заголовочных/исходных файлов</title>

<para
>В последующих страницах мастера вы сможете установить общую информацию о вашем проекте, которая будет включаться во все его файлы. </para>
<para
>Для некоторых языков программирования всё ещё нет готовых шаблонов. </para>
<para
>Если этот шаг был пройден, в начале исходных файлов будет добавлен комментарий о лицензии, например для программ на C++ он будет выглядеть так: </para>

<screen
><computeroutput
><literal>
/***************************************************************************
 *   Copyright (C) 2003 by Your Name                                       *
 *   you@you.com                                                           *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
</literal
></computeroutput
></screen>

<para
>Другие шаблоны будут иметь подобную информацию в оформлении, соответствующем выбранному языку программирования. </para>
<para
>На основе данных, введенных в мастере <guilabel
>создания проектов</guilabel
>, в т.ч. поля <guilabel
>Автор</guilabel
> и <guilabel
>E-mail</guilabel
>, информации о <guilabel
>лицензии</guilabel
>, шаблоны исходных файлов будут дополнены соответствующим кодом. </para>

<sect3 id="new-projects-start-templates-edit">
<title
>Изменение шаблонов</title>

<indexterm zone="new-projects-start-templates-edit">
  <primary
>шаблоны</primary>
  <secondary
>проект</secondary>
  <tertiary
>изменение</tertiary
></indexterm>
<indexterm zone="new-projects-start-templates-edit">
  <primary
>проект</primary>
  <secondary
>шаблоны</secondary>
  <tertiary
>изменение</tertiary
></indexterm>

<para
>Шаблоны, которые вы выбираете в диалоге <guilabel
>Создания нового проекта</guilabel
> будут использованы при добавлении нового исходного и/или заголовочного файла в проект. В начале каждого файла будет расположена некоторая информация, зависящая от шаблона. </para>
<para
>Вы не ограничены вставкой обычного текста, &kdevelop; распознаёт несколько переменных, которые будут заменены на некоторую, неизвестную заранее, информацию. В частности это может быть информация обо <guilabel
>авторе</guilabel
>, <guilabel
>E-mail</guilabel
> и <guilabel
>лицензии</guilabel
>. </para>

<formalpara>
<title
>Включение информации для &doxygen;</title>
<para
>Если, например, вы хотите чтобы API-документация, генерируемая программой &doxygen;, содержала также дополнительное краткое описание файла, включите в шаблон такой код: </para>
</formalpara
><screen
><computeroutput
><literal>
/**
 * \file $MODULE$.cpp
 * \brief (здесь нужно поставить краткое описание файла).
 **/
</literal
></computeroutput
></screen>
<para
>И каждый раз, когда вы будете создавать новый исходный файл, &kdevelop; заменит <computeroutput
>$MODULE$</computeroutput
> именем создаваемого файла. Например, если вы создали новый класс C++ с именем <classname
>ASimpleTest</classname
>, в начале файла <filename
>asimpletest.cpp</filename
> будет такой текст: </para>
<screen
><computeroutput
><literal>
/**
 * \file asimpletest.cpp
 * \brief (здесь нужно поставить краткое описание файла).
 **/
</literal
></computeroutput
></screen>
<para
>И теперь только будет оставаться ввести краткое описание после слова <quote
>\brief</quote
>, не вводя служебного, каждый раз одинакового, кода. </para>
<formalpara>
<title
>Файл с лицензией</title>
<para
>Также вы можете включить информацию о лицензии. Для этого используется переменная <computeroutput
>$LICENSEFILE$</computeroutput
>: </para>
</formalpara>
<screen
><computeroutput
><literal>
//   See $LICENSEFILE$ for the full license text.
</literal
></computeroutput
></screen>
<para
>Мастер приложений заменит <computeroutput
>$LICENSEFILE$</computeroutput
> на имя файла, содержащего лицензию, например: </para>
<screen
><computeroutput
><literal>
//   See COPYING for the full license text.
</literal
></computeroutput
></screen>
<para
>для лицензии GPL, или </para>
<screen
><computeroutput
><literal>
//   See LICENSE.BSD for the full license text.
</literal
></computeroutput
></screen>
<para
>если вы решили распространять свою программу под лицензией BSD </para>
<para
>&kdevelop; распознаёт много больше переменных. Для подробностей см. <link linkend="newfiles-edittemplates"
>Изменение шаблонов</link
> в главе <link linkend="editing"
>Средства правки</link
>. </para>

<note
><para
>Шаблоны, которые вы установили здесь, будут задействованы после создания проекта. Информация, выбранная вами, будет находится в начале каждого созданного в рамках проекта файла. </para
></note>

</sect3
> <!-- new-projects-start-templates-edit -->
</sect2
> <!-- new-projects-start-templates -->

<sect2 id="new-projects-start-build">
<title
>Построение начальных файлов проекта</title>

<indexterm zone="new-projects-start-build">
  <primary
>проект</primary>
  <secondary
>новый</secondary>
  <tertiary
>построение</tertiary
></indexterm>
<indexterm zone="new-projects-start-build">
  <primary
>проект</primary>
  <secondary
>начальное построение</secondary
></indexterm>

<para
>Теперь почти всё сделано. На последней странице кнопка <guibutton
>Далее &gt;</guibutton
> сменяется на  <guibutton
>Готово</guibutton
>. </para>
<para
><emphasis
>Подумайте дважды перед её нажатием!</emphasis
> Вы пока ещё имеете возможность вернуться <guibutton
>&lt; Назад</guibutton
> и изменить введённые данные. Если вы используете локальный CVS, проверьте ещё раз имя <emphasis
>хранилища</emphasis
> (указанного каталога не должно существовать). </para>
<para
>Чтобы отменить создание проекта, нажмите соответствующую кнопку, иначе, нажмите <guibutton
>Готово</guibutton
>, при этом в окне <guilabel
>Сообщения</guilabel
> будут выводится подробные действия, выполняемые мастером приложений. </para>
<para
>Если вы выбрали использование &CVS;, после создания дерева каталогов проекта, будет запущена программа &CVS;, очищающая предыдущее содержимое окна <guilabel
>сообщений</guilabel
>. </para>

<note
><para
>В большинстве случаев, после завершения создания, &kdevelop; автоматически откроет исходные файлы важных частей (это зависит от выбранного шаблона) </para
></note>

<para
>Не забудьте проверить предлагаемые по умолчанию мастером приложений значения. Например, вы можете изменить комментарии, добавляемые в начало исходных файлов. Шаблоны вашего проекта находятся в подкаталоге <filename class="directory"
>templates</filename
> базового каталога вашего проекта. </para>
<para
>Затем, перед вводом какого-либо кода, <emphasis
>откомпилируйте новый проект</emphasis
>. В большинстве случаев при этом проблем возникнуть не должно. Чтобы начать всё заново, удалить каталог проекта и его хранилище в корне &CVS; (если таковой имеется) и начните создание нового проекта заново. </para>

<warning id="defaultbuild-warning"
> <!-- ### remove this when "default" works again -->

  <indexterm zone="defaultbuild-warning">
    <primary
>сборочная конфигурация по умолчанию</primary>
    <secondary
>предупреждение</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>конфигурации сборки</primary>
    <secondary
>предупреждение сборки по умолчанию</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>предупреждение</primary>
    <secondary
>сборочная конфигурация по умолчанию</secondary
></indexterm>

  <para
>Перед компиляцией вашего проекта в первый раз, зайдите в  <menuchoice
><guimenu
>Проект</guimenu
> <guimenuitem
>Build Configuration</guimenuitem
></menuchoice
>. Там будет три вида компиляции: <guimenuitem
>default</guimenuitem
>, <guimenuitem
>optimized</guimenuitem
> и <guimenuitem
>debug</guimenuitem
>. </para>
  <para
>Из-за некоторых ограничений в текущей установке autoconf/automake, не используйте <guimenuitem
>default</guimenuitem
>. это приведёт к повреждению внутренней структуры каталогов, и вы не сможете использовать предустановку <guimenuitem
>optimized</guimenuitem
> и <guimenuitem
>debug</guimenuitem
>. </para>
  <para
>Если тип приложения, которое вы выбрали, предлагает только <guimenuitem
>default</guimenuitem
>, естественно используйте его. </para>
</warning>

</sect2
> <!-- new-projects-start-build -->

</sect1
> <!-- new-projects -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="applicationwizard-behind">
<title
>За упаковкой</title>

<indexterm zone="applicationwizard-behind">
  <primary
>проект</primary>
  <secondary
>новый</secondary>
  <tertiary
>построение</tertiary
></indexterm>
<indexterm zone="applicationwizard-behind">
  <primary
>CVS</primary>
  <secondary
>новый проект</secondary>
  <tertiary
>построение</tertiary
></indexterm>

<para
>Никогда не помешает следить за выводом и пытаться понять, что происходит. </para>

<tip>
<para
>Если ваш проект настроен на локальный &CVS;, сначала будут отображаться сообщения о создании проектных файлов, а затем, с нового экрана, сообщения &CVS;. </para>
<para
>Возможно вы не успеете прочитать журнал выполнения на всех двух этапах. </para>
</tip>
<para
>Тогда просмотрите <guilabel
>сообщения</guilabel
> этапов:: <itemizedlist>
  <listitem
><para
><link linkend="applicationwizard-behind-app"
>Инициализация проекта</link
> и  </para
></listitem>
  <listitem
><para
><link linkend="applicationwizard-behind-cvs"
>Инициализация &CVS;</link
>. </para
></listitem>
</itemizedlist>
</para>

<sect2 id="applicationwizard-behind-app">
<title
>Инициализация проекта</title>

<indexterm zone="applicationwizard-behind-app">
  <primary
>Perl</primary>
  <secondary
>новый проект</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app">
  <primary
>Perl</primary>
  <secondary
>kdevelop.pm</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app">
  <primary
>kdevelop.pm</primary
></indexterm>
<indexterm zone="applicationwizard-behind-app">
  <primary
>проект</primary>
  <secondary
>kdevelop.pm</secondary
></indexterm>

<para
>Если вы инициализировали проект <quote
>MyApp</quote
>, будут выведены такие сообщения(нажмите на строке для перехода к её описанию): </para>
<screen
><computeroutput>
* <link linkend="applicationwizard-behind-app-perl"
>perl</link
> /opt/kde3/share/apps/kdevappwizard/template-kapp/script \
  --author='Your Name' \
  --email='you@you.com' \
  --version='0.1' \
  --appname='MyApp' \
  --dest='/home/devel/projects/myapp' \
  --source='/opt/kde3/share/apps/kdevappwizard' \
  --license='GPL' \
  --licensefile='COPYING' \
  --filetemplates='h,/tmp/kde-devel/kdevelopcDE5Ja.tmp,\
                   cpp,/tmp/kde-devel/kdevelopsRrLab.tmp'
* <link linkend="applicationwizard-behind-app-base"
>Making destination directory</link>
* <link linkend="applicationwizard-behind-app-templates"
>Installing file templates</link>
* <link linkend="applicationwizard-behind-app-license"
>Installing license file</link>
* <link linkend="applicationwizard-behind-app-admin"
>Installing admin directory</link>
* <link linkend="applicationwizard-behind-app-gnu"
>Installing GNU coding standard files</link>
* <link linkend="applicationwizard-behind-app-doc"
>Installing Docbook template</link>
* <link linkend="applicationwizard-behind-app-project"
>Installing project file</link>
* <link linkend="applicationwizard-behind-app-framework"
>Installing application framework</link>
* <link linkend="applicationwizard-behind-app-sources"
>Installing application sources</link>
* Finished
* *** Success ***
</computeroutput
></screen>
<formalpara id="applicationwizard-behind-app-perl">
<title
>Вызов сценария &perl;</title>
<para
>Как видно, &appwizard; создал сценарий на &perl; на основе введённых вами данных в диалоге <guilabel
>создания нового проекта</guilabel
>. <filename
>script</filename
> расположен в каталоге, определяемом шаблоном. </para>
</formalpara>
<para
>В нашем случае <filename
>script</filename
> находится в <filename class="directory"
>/opt/kde3/share/apps/kdevappwizard/template-kapp/</filename
>. Просто замените <filename class="directory"
>/opt/kde3/</filename
> на каталог, куда установлен &kde; в вашей системе. </para>
<para
>Сценарий вызывается с набором параметров (с приставкой <quote
><computeroutput
>--</computeroutput
></quote
>), через которые передаётся введённая вами информация. </para>
<para
>Конкретные действия инициализации зависят от вызываемого сценария. </para>
<note
><para
>Установочные сценарии используют подпрограммы на &perl;, собранные в файле <filename
>kdevelop.pm</filename
>, который вы можете найти в подкаталоге <filename class="directory"
>share/apps/kdevwizard/template-common/</filename
> установочного каталога &kde;. </para
></note>

<formalpara id="applicationwizard-behind-app-base">
<title
>Базовый каталог приложения</title>
<para
>При выполнении &perl;-сценария, будут выведены сообщения о том, что <emphasis
>будет сделано</emphasis
> на следующем этапе. Прежде всего будет создан <computeroutput
>конечный каталог</computeroutput
>. Это базовый каталог вашего приложения, именно его имя отображалось в строке <guilabel
>Окончательное расположение</guilabel
> диалога <guilabel
>создания нового проекта</guilabel
>, на странице <guilabel
>Общие</guilabel
>. Сценарий использует значение, передаваемое параметром <computeroutput
>--dest</computeroutput
>. </para>
</formalpara>

<indexterm zone="applicationwizard-behind-app-templates">
  <primary
>проект</primary>
  <secondary
>шаблоны</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-templates">
  <primary
>шаблоны</primary>
  <secondary
>проект</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-templates">
<title
>Шаблоны файлов</title>
<para
>Далее, выбранные вами шаблоны будут скопированы в подкаталог <filename class="directory"
>templates</filename
> конечного каталога проекта. </para>
</formalpara>
<para
>В нашем случае это будет <filename
>templates/h</filename
> для заголовочных и<filename
>templates/cpp</filename
> для исходных файлов C++. </para>

<indexterm zone="applicationwizard-behind-app-license">
  <primary
>проект</primary>
  <secondary
>лицензия</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-license">
  <primary
>лицензия</primary
></indexterm>

<formalpara id="applicationwizard-behind-app-license">
<title
>Файл лицензии</title>
<para
>На странице <guilabel
>Общие</guilabel
> вы выбрали лицензию, по которой хотите распространять вашу программу. В соответствии с этим информация о лицензировании будет добавлена во все шаблоны вашего проекта, а в базовый каталог проекта будет скопирован файл с текстом лицензии. </para>
</formalpara>
<para
>Параметр <computeroutput
>--licensefile</computeroutput
> передаёт <filename
>сценарию</filename
> имя этого файла. В нашем случае это <filename
>/home/devel/yournewapplication/COPYING</filename
>. </para>

<indexterm zone="applicationwizard-behind-app-admin">
  <primary
>проект</primary>
  <secondary
>управление</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-admin">
  <primary
>администрирование</primary
></indexterm>

<formalpara id="applicationwizard-behind-app-admin">
<title
>Каталог администрирования</title>
<para
>&kdevelop; требуется некоторый набор файлов для управления проектом. Они находятся в подкаталоге <filename class="directory"
>admin</filename
> базового каталога проекта. </para>
</formalpara>
<para
>На этом этапе мастер приложений создаёт каталог <filename class="directory"
>admin</filename
> и распаковывает в него стандартный набор файлов администрирования из архива <filename
>share/apps/kdevappwizard/template-common/admin.tar.gz</filename
> (в каталоге &kde;). </para>
<note
><para
>Для создания каталога <filename class="directory"
>admin</filename
> и его содержимого параметров не требуется. </para
></note>

<indexterm zone="applicationwizard-behind-app-gnu">
  <primary
>GNU</primary>
  <secondary
>стандарты кодирования</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-gnu">
<title
>Стандартные файлы &GNU;</title>
<para
>Для согласования со стандартами &GNU;, программы должны распространяться с некоторыми файлами. &perl;-сценарий распаковывает эти файлы из <filename
>share/apps/kdevappwizard/template-common/gnu.tar.gz</filename
>, находящегося в каталоге &kde;, и подстраивает их под данные, введённые вами в диалоге <guilabel
>создания нового проекта</guilabel
>. </para>
</formalpara>
<para
>После этого этапа вы найдёте следующие файлы в базовом каталоге вашего приложения: <itemizedlist>
  <listitem
><para
><filename
>AUTHORS</filename
>, изначально содержащий данные, переданные параметром  <computeroutput
>--author</computeroutput
> и <computeroutput
>--email</computeroutput
>. </para
></listitem>
  <listitem
><para
><filename
>COPYING</filename
>, текст общедоступной лицензии &GNU;, по которой распространяются все приложения &GNU;. </para
></listitem>
  <listitem
><para
><filename
>ChangeLog</filename
>, изначально пустой &mdash; записывайте здесь все большие изменения в вашей программе. </para
></listitem>
  <listitem
><para
><filename
>INSTALL</filename
> содержит общие инструкции по установке &mdash; измените его если для установки вашего приложения понадобятся какие-либо специальные действия. </para
></listitem>
  <listitem
><para
><filename
>README</filename
>, изначально пустой &mdash; сохраните в нём информацию, которую пользователь должен знать перед установкой. </para
></listitem>
  <listitem
><para
><filename
>TODO</filename
>, изначально пустой &mdash; используйте его для протоколирования ваших планов по дальнейшей разработке проекта. Распространение этого файла вместе с программой даст пользователям возможность узнать что вы хотите сделать и не отправлять лишние пожелания, кроме того возможно кто-нибудь захочет вам помочь и возьмётся за реализацию ваших планов. </para
></listitem>
</itemizedlist>
</para>

<indexterm zone="applicationwizard-behind-app-doc">
  <primary
>проект</primary>
  <secondary
>документация</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-doc">
  <primary
>документация</primary>
  <secondary
>проект</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-doc">
<title
>Начальная документация проекта</title>
<para
>Каждый вновь созданный проект будет содержать шаблон <emphasis
>DocBook</emphasis
>, на основе которого вы сможете документировать вашу программу. &perl;-сценарий создаст в базовом каталоге приложения подкаталоги <filename class="directory"
>doc</filename
> и <filename class="directory"
>doc/en</filename
> с шаблоном <filename
>doc/en/index.docbook</filename
> и файлами &automake; <filename
>Makefile.am</filename
>, на основе которых &kdevelop; сможет собрать справочную систему. </para>
</formalpara>

<indexterm zone="applicationwizard-behind-app-project">
  <primary
>проект</primary>
  <secondary
>файл проекта</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-project">
  <primary
>&kdevelop;</primary>
  <secondary
>файл проекта</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-project">
<title
>Файл проекта</title>
<para
>Файл проекта содержит всю глобальную информация проекта, необходимую &kdevelop;. На этом этапе и создаётся такой файл для вашего приложения. Для подробностей см. сообщения сценария. </para>
</formalpara>
<para
><emphasis
>Файл управления проектом &kdevelop;</emphasis
> копируется из каталога шаблонов, где и находится сценарий &perl;. В нашем случае копируется файл <filename
>share/apps/kdevappwizard/template-kapp/app.kdevelop</filename
>, а затем изменяется в соответствии с введёнными вами данными. </para>

<note
><para
>Он сохраняется под именем <filename
>/home/devel/projects/myapp.kdevelop</filename
>, имеет формат XML, поэтому его можно легко просмотреть в <application
>Kate</application
> или в любом другом редакторе. </para
></note>

<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>проект</primary>
  <secondary
>framework</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>проект</primary>
  <secondary
>структура приложения</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>структура</primary
></indexterm>
<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>приложение</primary>
  <secondary
>framework</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-framework">
<title
>Структура приложения</title>
<para
>К этому времени вы уже подготовили дерево каталогов для расположения в них исходных и прочих служебных файлов. Это называется <emphasis
>структурой приложения</emphasis
>. Она зависит в основном от типа приложения, которое вы выбрали в диалоге <guilabel
>создания нового проекта</guilabel
>. </para>
</formalpara>
<para
>В нашем случае, структура каталога <filename class="directory"
>/home/devel/projects/myapp/</filename
> будет такой: <itemizedlist>
  <listitem
><para
>Каталог <filename
>src</filename
> предназначен для хранения исходных файлов вашего приложения. </para
></listitem>
  <listitem
><para
>Каталог <filename
>debug</filename
> предназначен для откомпилированных с <emphasis
><quote
>отладочной</quote
> информацией</emphasis
> файлов проекта. Для подробностей см. <link linkend="buildconfigurations"
>Конфигурации сборки</link
>. </para
></listitem>
  <listitem
><para
>Каталог <filename
>optimized</filename
> предназначен для откомпилированных файлов проекта с <emphasis
><quote
>оптимизационной</quote
> конфигурацией</emphasis
>. </para
></listitem>
  <listitem
><para
>Каталог <filename
>po</filename
> предназначен для файлов локализации. В нём хранятся <filename
>.po</filename
>-файлы (файлы с переводом, <quote
>Portable Object</quote
>) и <filename
>.pot</filename
>-файлы (шаблоны перевода). Эти файлы можно изменять с помощью программы <application
>KBabel</application
>. </para
></listitem>
</itemizedlist>
</para>
<para
>Сначала все эти каталоги содержат только файлы <filename
>Makefile</filename
> и другие служебные файлы &kdevelop;. Кроме того, в каталоге <filename
>src</filename
> вы найдёте стандартные значки для вашего приложения. Например, это может быть <filename
>src/hi16-app-myapp.png</filename
> и <filename
>src/hi32-app-myapp.png</filename
>. </para>

<formalpara id="applicationwizard-behind-app-sources">
<title
>Создание исходников приложения</title>
<para
>В соответствии со структурой приложения, <emphasis
>начальные исходные файлы</emphasis
> будет созданы в подкаталоге <filename class="directory"
>src</filename
>. Их тип зависит от типа приложения, который был выбран в диалоге <guilabel
>Создать новый проект</guilabel
>. </para>
</formalpara>

</sect2
> <!-- applicationwizard-behind-app -->

<sect2 id="applicationwizard-behind-cvs">
<title
>Инициализация &CVS;</title>

<indexterm zone="applicationwizard-behind-cvs">
  <primary
>CVS</primary>
  <secondary
>новый проект</secondary>
  <tertiary
>построение</tertiary
></indexterm>
<indexterm zone="applicationwizard-behind-cvs">
  <primary
>проект</primary>
  <secondary
>CVS</secondary
></indexterm>

<para
>Теперь давайте обратим внимание на <guilabel
>сообщения</guilabel
>, выводимые при продолжении построения проекта мастером приложений. Если на первом этапе не произошло никаких ошибок, окно <guilabel
>сообщений</guilabel
> очистится и будет отображать протокол инициализации локального хранилища &cvs;. </para>
<para
>Некоторые неважные строки опущены (там где <quote
>. . .</quote
>): </para>

<screen
><computeroutput>
* cd '/home/devel/projects/myapp' \
  &amp;&amp; cvs -d '/home/devel/cvsroot' \
         import -m 'new project' \
                'MyApp' \
                'vendor' \
                'start' \
  &amp;&amp; sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . \
                                                 'MyApp' \
                                                 '/home/devel/cvsroot'
  . . .
* N MyApp/NEWS
* N MyApp/TODO
* N MyApp/README
  . . .
* N MyApp/admin/configure.in.bot.end
* N MyApp/templates/h
* N MyApp/templates/cpp
*
* No conflicts created by this import
*
* *** Success ***
</computeroutput
></screen>

<para
>Мастер приложений запускает &cvs; с некоторыми параметрами, перед этим перейдя в базовый каталог приложения. </para>

<formalpara>
<title
>Построение хранилища &cvs;</title>
<para
>Далее вызывается программа &CVS; для <emphasis
>импорта</emphasis
> начального содержимого проекта в хранилище. </para>
</formalpara>
<itemizedlist>
  <listitem
><para
><computeroutput
>-d '/home/devel/cvsroot'</computeroutput
> &mdash; параметр <computeroutput
>-d</computeroutput
> передаёт корень &CVS;. В нашем случае &mdash; это <filename class="directory"
>/home/devel/cvsroot</filename
>. </para
></listitem>
  <listitem
><para
><computeroutput
>import</computeroutput
> &mdash; какое действие выполнять, аргументы: <itemizedlist>
      <listitem
><para
><computeroutput
>-m 'new project'</computeroutput
> &mdash; параметр <computeroutput
>-m</computeroutput
> импортирует некоторый <emphasis
>текст сообщения</emphasis
> для этого действия. он будет сохранён в базе данных может быть вызван для определения (описания) изменений, которые были сделаны на данном этапе. В нашем случае это <quote
><computeroutput
>new project</computeroutput
></quote
>, что говорит о первом добавлении файлов в базу данных. </para
></listitem>
      <listitem
><para
><computeroutput
>'MyApp'</computeroutput
> &mdash; второй параметр передаёт имя несуществующего <emphasis
>хранилища</emphasis
>. </para
></listitem>
      <listitem
><para
><computeroutput
>'vendor'</computeroutput
> &mdash; следующий аргумент &mdash; <emphasis
>тег</emphasis
>, символическое имя, отмечающее некоторый набор файлов в каталоге. Есть несколько значений, которые может принимать тег (см. <link linkend="cvs"
>Использование CVS</link
>), он отмечает целый набор файлов, которые будут когда-либо сохранены в этом хранилище. </para
></listitem>
      <listitem
><para
><computeroutput
>'start'</computeroutput
> &mdash; другой тег, отмечающий <emphasis
>выпуск</emphasis
>, кратко говоря набор файлов проекта на определённой стадии разработки. </para
></listitem>
    </itemizedlist>
  </para
></listitem>
</itemizedlist>

<formalpara>
<title
>Импортирование файлов</title>
<para
>Программа &CVS; создаст хранилище и начнёт импортировать в него все файлы из <filename class="directory"
>/home/devel/projects/myapp</filename
>. Буква <computeroutput
>N</computeroutput
> в начале строки в окне <guilabel
>сообщений</guilabel
> предшествует импортируемому файлу. </para>
</formalpara>
<para
>Мы оставили только первые и последние три таких сообщения. </para>

<formalpara>
<title
>Сообщение об успешном окончании операций &CVS;</title>
<para
>&CVS; почему-то всегда выводит что-нибудь, даже если операция была произведена успешно. </para>
</formalpara>

<note
><para
>Процессе выполнения <emphasis
>могут</emphasis
> возникнуть определённые ошибки, например при конфликте файлов при добавлении файлов в старое хранилище. &CVS; проверяет содержимое файла по некоторому формальному критерию. </para
></note>

<formalpara>
<title
>Установка записей администрирования &cvs;</title>
<para
>На этом операция импорта в &CVS; заканчивается. Хранилище установлено и все файлы в него занесены. Теперь осталось создать служебную информацию для &CVS;. </para>
</formalpara>
<para
>Если бы мы имели дело с "чистым" &CVS;, для записи файлов в текущем каталоге, нужно было бы ввести специальные служебные данные. Например, можно выполнить <emphasis
>check out</emphasis
> в пустой каталог, и в нём, при этом, автоматически будут созданы служебные файлы &CVS;. </para>
<para
>С &kdevelop; поставляется сценарий <filename
>buildcvs.sh</filename
>, который можно найти в каталоге <filename class="directory"
>/opt/kde3/share/apps/kdevcvs/</filename
> (где <filename class="directory"
>/opt/kde</filename
> - каталог, куда установлен &kde;). Он вызывается Мастером приложений после завершения работы &CVS;. </para>
<para
>Сценарий <filename
>buildcvs.sh</filename
> создаёт подкаталог <filename class="directory"
>CVS</filename
> в каждом каталоге приложения. В каждом из них по три файла: </para>
<itemizedlist>
  <listitem
><para
><filename
>Root</filename
> содержит имя сервера, где расположен корень &cvs;. В нашем случае это локальный <filename
>/home/devel/cvsroot</filename
>. Желательно не менять &cvs;-корень приложения, т.к. версии файлов в нём хранятся не отдельно, а лишь с данными различий (<emphasis
>diff</emphasis
>). Т.е. сначала полностью записывается первоначальная версия файла, а затем сохраняются лишь различия новой версии с предыдущей. </para
></listitem>
  <listitem
><para
><filename
>Repository</filename
> предназначен для того же. &CVS; хранит имя используемого хранилища, в нашем случае это <filename
>MyApp</filename
>. </para
></listitem>
  <listitem
><para
><filename
>Entries</filename
> содержит имена и некоторую другую информацию о файлах каталога. Этот файл может быть полезен, если вы хотите записывать в хранилище не все файлы, расположенные в данном каталоге. </para>
  </listitem>
</itemizedlist>

<para
>Все вышеперечисленные файлы необходимы, т.к. работа &CVS; является <emphasis
>по-каталоговой</emphasis
>. Сценарий <filename
>buildcvs.sh</filename
> просто сканирует  каждый каталог приложения и заносит все найденные файлы в хранилище (в соответствии с файлом <filename
>CVS/Entries</filename
>. </para>
<para
>Сценарий выполняется без сообщений. </para>

</sect2
> <!-- applicationwizard-behind-cvs -->

</sect1
> <!-- applicationwizard-behind -->

</chapter
> <!-- applicationwizard -->
